python-3.x 为什么这不能作为数组成员资格测试?[duplicate]

hec6srdp  于 2023-02-17  发布在  Python
关注(0)|答案(1)|浏览(98)
    • 此问题在此处已有答案**:

python operator precedence of in and comparison [duplicate](3个答案)
6年前关闭。

>>> 5 in [1, 2, 3, 4] == False
False

我知道这是一个奇怪的方式来测试会员资格,

>>> 5 not in [1, 2, 3, 4]
True

是"正确"的方式,令我困惑的是它的行为与两者不同

>>> (5 in [1, 2, 3, 4]) == False
True

以及

>>> 5 in ([1, 2, 3, 4] == False)
TypeError ...

我错过了一些明显的东西吗?(在Python 2.7和Python 3.4中测试过)。
澄清一下,我理解最后三个代码段,我问的是第一个代码段的行为,以及为什么它是不同的。

cyvaqqii

cyvaqqii1#

这是一个连锁比较。你可能知道你可以
在Python中,它等价于(1 < 2) and (2 < 3)。(也许你以前没有,现在你知道了。)同样的道理也适用于in==

5 in [1, 2, 3, 4] == False

相当于

(5 in [1, 2, 3, 4]) and ([1, 2, 3, 4] == False)

由于[1, 2, 3, 4]不等于False,因此整个表达式的计算结果为False

相关问题