Python 肾盂道-三元vs或

Python 肾盂道-三元vs或,python,logical-operators,conditional-operator,Python,Logical Operators,Conditional Operator,我真的只是想知道,在这种情况下,蟒蛇式的做法是什么?使用if-else三元或or: true_list=[] 对于_列表中的x,y:x,y可以是任何真值或假值 true_list.appendx或y true_list.appendx if x else y 编辑:我更新了问题以忽略语义,我主要想知道哪个表达式更像python;使用它 一般来说,当您只关心表达式的真实性,而不关心正在考虑其真实性的实际值时,使用or 引入条件表达式是因为许多人试图编写类似 <condition> an

我真的只是想知道,在这种情况下,蟒蛇式的做法是什么?使用if-else三元或or:

true_list=[] 对于_列表中的x,y:x,y可以是任何真值或假值 true_list.appendx或y true_list.appendx if x else y
编辑:我更新了问题以忽略语义,我主要想知道哪个表达式更像python;使用它

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

引入条件表达式是因为许多人试图编写类似

<condition> and x or y

但这是一个微妙的错误:如果条件为真,则表达式等于x,但只有当条件和x都为真时,表达式才等于x。

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

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

引入条件表达式是因为许多人试图编写类似

<condition> and x or y
但这是一个微妙的错误:如果条件为真,表达式的意图是等于x,但只有当条件和x都为真时,表达式才等于x。

如果x和y都为零,则可以做得更详细:

>>> string = ""
>>> x, y = (None, None)
>>> string += x if x else y if y else '' # Fallback to empty string
>>> string
''
如果x和y都可以为“无”,则可以执行更详细的操作:

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

如果你写字符串+=x,如果x不是其他y,你不需要注释。它处理空字符串的方式与处理空字符串的方式不同,不能忽略语义。如果x或y在语法上都不正确,那么不按您的意愿执行的代码就不是Pythonic.x;如果你不需要注释,我就假设你不需要注释。它处理空字符串的方式与处理空字符串的方式不同,不能忽略语义。如果x或y在语法上都不正确,那么不按您的意愿执行的代码就不是Pythonic.x;我想你的意思是x如果x或者y。这就是我要做的,更可读,并且在python中通常是常见的。我更新了这个问题,以更好地反映我的意思!这就是我要做的,更具可读性,并且在python中更常见。我更新了这个问题,以更好地反映我的意思!