python - 为什么这不能用作数组成员测试?

标签 python python-2.7 python-3.x

<分区>

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

澄清一下,我理解最后三个片段。我问的是 first 片段的行为,以及它为何不同。

最佳答案

这是一个链式比较。你可能已经知道你可以做到

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 .

关于python - 为什么这不能用作数组成员测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54682247/

相关文章:

python - 使用 pyparsing 接受直到 "more than 1 white space"的所有内容

python - 在字符串python中查找最长的唯一子字符串

python - 如何并行运行生成器代码?

python - 每次调用时关闭与 python tornado http 客户端的连接

python - Django 管理中的下拉框不会自动填充选项

python - 如何将 utf-8 花式引号转换为中性引号

python - Pyarrow 使用 Pandas 不断将字符串转换为二进制

python:在动态创建的类中进行名称修改

python - 附加到文件无法正常工作

python - 使用神经网络的传播模型(我是初学者)