【问题标题】:Python Ternary Operator Comparison: `a if test else b` v.s. `test and a or b` [duplicate]Python 三元运算符比较:`a if test else b` vs. `测试和a或b` [重复]
【发布时间】:2013-07-12 17:38:40
【问题描述】:

据我所知,Python 有两个Ternary Operators

  1. a if test else b

  2. 测试和a或b

看起来他们达到了相同的目标,并且都可以在lambda函数中使用。

>>> (lambda x: True if x > 0 else False)(5)
True
>>> (lambda x: True if x > 0 else False)(-5)
False

>>> (lambda x: x > 0 and True or False)(5)
True
>>> (lambda x: x > 0 and True or False)(-5)
False

问题

在任何情况下我们应该使用其中一个而不是另一个?

【问题讨论】:

  • 不,... and ... or ... 不是三元运算符。即两个 二元运算符。

标签: python lambda conditional-operator


【解决方案1】:

它们可以产生不同的结果:

In [30]: (lambda x: x and 0 or 1)(True)
Out[30]: 1

In [31]: (lambda x: 0 if x else 1)(True)
Out[31]: 0

【讨论】:

  • 谢谢@unutbu!是的,只有当a(在test and a or b)为true时,and-or 技巧才有效。 a if test else b 似乎是执行三元条件计算的一种更可靠、更简洁的方法:-)
猜你喜欢
  • 2020-08-28
  • 2021-10-04
  • 1970-01-01
  • 2018-01-29
  • 1970-01-01
  • 1970-01-01
  • 2011-09-16
  • 2012-07-26
  • 1970-01-01
相关资源
最近更新 更多