在 Python 2.7 中
当向口译员询问以下内容时:
(1 or 3) > 2
它返回 False
这是为什么?如果 1 或 3 大于 2,我实际上问的是什么,显然不是。
类似地,询问 (1 or 5) in range(2,6)
也会返回 False
我 100% 确定它与我的 (x 或 y) 部分有关,但同样,这是为什么?我不太需要用不同的方式来陈述这样的事情,据我所知,我可以问:
if x in range(2,6) or y in range(2,6):
但我只是想知道为什么它不起作用!
最佳答案
让我们检查一下 (1 or 3) > 2
:
(1 or 3)
首先被评估,给出1
(如果您想知道为什么,请参阅 The Peculiar Nature ofand
andor
)。
接下来计算 1 > 2
,给出False
。
正确的表达方式是:
>>> 1 > 2 or 3 > 2
True
另一种更通用的方式如下:
>>> t = (1, 3)
>>> any(el > 2 for el in t)
True
这里,t
可以是任何可迭代的。
关于python - 有人可以解释这里的逻辑或我在问什么吗? ( bool 运算),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15242093/