内联比较中的零分配

时间:2016-04-28 05:59:04

标签: python

示例:

>>> x = 10
>>> x = x > 9 and 0 or x
>>> x
10

,同时:

>>> x = 10
>>> x = x > 9 and 1 or x
>>> x
1

显然0被视为布尔值False。如何使用内联比较来分配整数0?

2 个答案:

答案 0 :(得分:2)

试试这个:

x = 0 if x > 9 else x

答案 1 :(得分:2)

你可能想要这个

 x= 0 if x > 9 else x

这是传统三元运算符在类似语言中的python方式。

您拥有的代码段将始终为x和1提供x或1; 9:

x = x > 9 and 0 or x

这被解释为

x = (x > 9 and 0) or x
x = 0 or x
x =  x

另一个版本

x = x > 9 and 1 or x

被解释为

x = (x > 9 and 1) or x
x = 1 or x # or gets short-circuited so second expression is not evaluated
x = 1