使用打印功能的三元运算符
Ternary operator using print function
print( (b, a) [a < b] )
print((lambda: b, lambda: a)[a < b]())
这个功能是如何工作的?
封面背后发生了什么?
这两者有什么区别?
(PYTHON)
(b, a)
是一个元组,可以像列表一样进行索引——(b, a)[0]
计算为 b
,(b, a)[1]
为 a
。这里的技巧是,在 Python 中,bool 也像整数一样工作——False
像 0,True
像 1。a < b
计算为 bool——到 True
如果 a
小于 b
,否则为 False
。
FWIW Python 有一个真正的三元运算符已经有一段时间了——编写这样的东西的正常方法是 a if a < b else b
。尽管实际上在这种特殊情况下,您可能会选择更短的 min(a, b)
!
print( (b, a) [a < b] )
print((lambda: b, lambda: a)[a < b]())
这个功能是如何工作的?
封面背后发生了什么?
这两者有什么区别?
(PYTHON)
(b, a)
是一个元组,可以像列表一样进行索引——(b, a)[0]
计算为 b
,(b, a)[1]
为 a
。这里的技巧是,在 Python 中,bool 也像整数一样工作——False
像 0,True
像 1。a < b
计算为 bool——到 True
如果 a
小于 b
,否则为 False
。
FWIW Python 有一个真正的三元运算符已经有一段时间了——编写这样的东西的正常方法是 a if a < b else b
。尽管实际上在这种特殊情况下,您可能会选择更短的 min(a, b)
!