我是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.
答案 0 :(得分:8)
目前您使用的if x > y
仅对x
和y
进行了比较,但您需要同时将x
与z
进行比较步骤
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