Pythonic 方式 - 三元 vs 或

Pythonic way - Ternary vs or

我真的只是想知道,当谈到这种情况时,pythonic 的处理方式是什么?使用 if else 三元或 or:

true_list = []
for x, y in a_list: # x, y could be any truthy or falsy value
  true_list.append(x or y)
  true_list.append(x if x else y)

编辑: 我更新了问题以忽略语义,我主要想知道哪个表达式更 pythonic。

这是引入条件运算符的情况;使用它。

string += x if x else y  # Or ... if x is not None ... if the distinction is necessary

一般来说,当你只关心表达式的真实性,而不关心其真实性正在考虑的"actual"值时,使用or

引入条件表达式是因为很多人试图写出这样的代码

<condition> and x or y

但这是一个微妙的错误:如果条件为真,表达式的意图是等于 x,但如果 both[=26],它实际上只等于 x =] 条件和 x 为真。

xy 都可以是 None 的情况下,你可以做更详细的:

>>> string = ""
>>> x, y = (None, None)
>>> string += x if x else y if y else '' # Fallback to empty string
>>> string
''