>>> 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中测试)。
为了澄清,我理解最后三个片段。我要问的是first代码段的行为,以及为什么不同。
发布于 2016-12-06 03:17:16
这是一个连锁的比较。你可能知道你能做到
1 < 2 < 3在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。
https://stackoverflow.com/questions/40987185
复制相似问题