Python Booleans [已关闭]

Python Booleans [closed]

提问人:Danish Khan 提问时间:7/30/2022 更新时间:7/30/2022 访问量:51

问:


想改进这个问题吗?通过编辑这篇文章来更新问题,使其仅关注一个问题。

去年关闭。

在 Python 中,

if 1 and 2 not in {0, 1}:  # return True
    print(True)
if 0 and 2 not in {0, 1}:  # return False
    print(True)

不知道为什么有人可以向我解释一下?

python-3.x 布尔 逻辑

评论

1赞 Thierry Lathuille 7/30/2022
请参见 docs.python.org/3/reference/...。 优先级较低,因为 和andnatin
0赞 Fatemeh Karimi 7/30/2022
0 在 Python 中被计算为 false。
0赞 Daniel Hao 7/30/2022
尝试理解第一种情况并且是短路的,所以如果它看到 1 它会停止,而第 2 种情况它会在...Truth

答:

0赞 itismoej 7/30/2022 #1

这是因为它由多个条件组成。 等于和 等于 和 大多数情况下,它们可以互换使用。if1True0False

所以:

1 and 2 not in {0, 1}
# is actually
(1) and (2 not in {0, 1})
# which equals to
(True) and (2 not in {0, 1})
# and both of them are True
True and True

# -------------------

# but in this case
0 and 2 not in {0, 1}
# is actually
(0) and (2 not in {0, 1})
# which equals to
(False) and (True)
# that is False

如果要检查序列中是否有多个值,则应执行以下操作:

1 in {0, 1} and 2 in {0, 1}
2赞 RNovey 7/30/2022 #2

我想你的意思是:

if 1 not in {0, 1} and 2 not in {0, 1}:

你拥有它的方式,它正在解析(如果 1)和(如果 2 不在 {0, 1} “If 1”始终解析为 true。

2赞 EMO_4455 7/30/2022 #3

您可以利用所有

mySet = {0,1}
if not all(x in mySet for x in (1,2)):
    print(True)

if not all(x in mySet for x in (0,2)):
    print(True)

外:

True
True