>>> x = 10
>>> x = x > 9 and 0 or x
>>> x
10
而:
>>> x = 10
>>> x = x > 9 and 1 or x
>>> x
1
显然0被视为布尔假。如何使用内联比较来分配整数0?
>>> x = 10
>>> x = x > 9 and 0 or x
>>> x
10
而:
>>> x = 10
>>> x = x > 9 and 1 or x
>>> x
1
显然0被视为布尔假。如何使用内联比较来分配整数0?
你可能想这
x= 0 if x > 9 else x
这是用C语言一样三元传统运营商的蟒蛇方式。
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或1 x> 9的代码片段解释为
x = (x > 9 and 1) or x
x = 1 or x # or gets short-circuited so second expression is not evaluated
x = 1
为了好玩,这似乎也工作得很好:'x = int(x> 9和'0'或x)',虽然当然是更糟糕的解决方案 – vedar
试试这个:
x = 0 if x > 9 else x
你能指定你想要的结果吗? –
如果数字大于9,我想要0 0 – vedar
如果它不大于9,你想要什么? – AKS