【发布时间】:2020-12-26 02:29:27
【问题描述】:
print( (b, a) [a < b] )
print((lambda: b, lambda: a)[a < b]())
这个功能是如何工作的?
封面背后发生了什么?
这两者有什么区别?
(PYTHON)
【问题讨论】:
-
请提出一个问题。并尝试将这个问题作为标题。
标签: python printing conditional-operator
print( (b, a) [a < b] )
print((lambda: b, lambda: a)[a < b]())
这个功能是如何工作的?
封面背后发生了什么?
这两者有什么区别?
(PYTHON)
【问题讨论】:
标签: python printing conditional-operator
(b, a) 是一个元组,可以像列表一样被索引——(b, a)[0] 的计算结果为 b,(b, a)[1] 为 a。这里的技巧是,在 Python 中,布尔值也像整数一样——False 像 0 和 True 像 1。a < b 计算为布尔值——如果 a 小于 b,则为 True , 到 False 否则。
FWIW Python 有一个真正的三元运算符已经有一段时间了——写这样的东西的正常方法是a if a < b else b。尽管实际上在这种特殊情况下,您可能会选择更短的min(a, b)!
【讨论】: