当前位置: 首页 > 面试题库 >

为什么这不能用作数组成员资格测试?

邹嘉致
2023-03-14
问题内容

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中测试)。

为了澄清,我理解了最后三个片段。我在问 第一个 代码片段的行为,以及为什么与众不同。


问题答案:

这是一个链式比较。您可能知道您可以做

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



 类似资料: