python - 奇怪的行为 : What does "12 in [12,13,14] == True" mean in Python

标签 python

我本来希望它在左边或右边有括号。

但它似乎在做别的事情!

>>> 12 in [12,13,14] == True
False
>>> (12 in [12,13,13]) == True
True
>>> 12 in ([12,13,14] == True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: argument of type 'bool' is not iterable

最佳答案

以下表达式的计算结果为 False 可能令人惊讶:

12 in [12,13,14] == True

事情是这样的:in== 运算符具有相同的优先级, 并且它们支持从左到右的链接(参见 the docs ),所以 该表达式等同于

12 in [12,13,14] and [12,13,14] == True

现在 and 的约束力降低了,左侧显然计算为 。现在是棘手的部分:一个非空序列,例如 [12, 13, 14] 列表评估True,但它不等于 True。这是一个所谓的 “真实”的值(value)。 Truthy 和 Falsy 值不是 bool 值(不是 bool 类型的实例),但它们 评估为 TrueFalse

所以他们在 比较的右侧评估为 False

关于python - 奇怪的行为 : What does "12 in [12,13,14] == True" mean in Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66282305/

相关文章:

python - 何时使用术语 python shell 和 python 解释器?

python - SQLAlchemy 没有为多列 UniqueConstraints 生成正确的 SQL 语句

python - 配置 conda 构建以从 conda 包输出中排除一些文件夹

python - 在三个二维子矩阵中按元素查找最小值

python - 在 Python 中使用不同的相等性测试删除重复项

python - 无法在破折号应用程序中加载静态 css 文件

Python合并npz文件

python - 使用 try 语句如何避免竞争条件?

Python - 在字符串中翻转二进制 1's and 0'

python - 通过 'for' 循环实例化多个任务时出现 Airflow 依赖错误