这个问题已经有了答案:
>>> 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 ...
我有没有漏掉一些显而易见的东西?(在Python2.7和Python3.4中测试)。
为了澄清,我理解最后三个片段。我问的是 第一 片段,为什么不同。
这是一个链式的比较。你可能知道你可以
1 < 2 < 3
在python中,它相当于 (1 < 2) and (2 < 3) . (或许你没有,现在你知道了)同样的事情也适用于 in 和 == .
(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 ,整个表达式的计算结果为 假 .
[1, 2, 3, 4]
False
假