具有嵌套if的Lambda无法正常工作

时间:2015-07-08 13:23:26

标签: python lambda

我是Python的新手,目前正在学习lambda表达式。我正在解决一个辅导课程

  

定义一个函数max_of_three(),它将三个数字作为参数   并返回其中最大的一个。

我已经完成了这个old post并尝试了没有成功:

>>> max_of_three = lambda x, y, z : x if x > y else (y if y>z  else z)
>>> max_of_three(91,2,322)
91

为什么不回Z?这是X.

4 个答案:

答案 0 :(得分:8)

目前您使用的if x > y仅对xy进行了比较,但您需要同时将xz进行比较步骤

max_of_three = lambda x, y, z: x if x > y and x > z else (y if y > z else z)
print max_of_three(91, 2, 322)
>>> 322

答案 1 :(得分:4)

或者,更简单:

max_of_three=lambda x,y,z:max((x,y,z))

max_of_three(1,2,3)
3

我知道它在作弊,但使用语言原语通常更容易: - )

答案 2 :(得分:1)

您可以按如下方式修改您的功能:

max_of_three = lambda x, y, z : x if x > y and x > z else (y if y>z  else z)

您的问题是您没有检查x是否也大于z。在您的情况下,x大于y,因此,它只返回x,并且不再将其与z进行比较。

答案 3 :(得分:1)

>>> max_of_three = lambda x, y, z : x if x>y and x>z else (y if y>z  else z)
>>> max_of_three(91,2,322)
322