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

Lax*_*ant 3 python lambda

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

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

我已经阅读了这篇旧文章并尝试过没有成功:

>>> 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
Run Code Online (Sandbox Code Playgroud)

为什么不回Z?这是X.

Zda*_*daR 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
Run Code Online (Sandbox Code Playgroud)


Bru*_*uce 5

或者,让它更简单:

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

max_of_three(1,2,3)
3
Run Code Online (Sandbox Code Playgroud)

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