"in" 运算符的优先级是什么?

What is the precedence of the "in" operator?

今天在这个Python程序中遇到了困难:

a = [False, True]
x = True in a in a
y = True in a in [a]
z = True in a in (a)
print(x, y, z)

这段代码的输出是

False True False

怎么可能?

让我们在这里测试 x

x = True in a in a

True in [False, True]TrueTrue in [False, True] 又是 True

所以x应该是True。但是当我 运行 程序时它说 False.

现在让我们从右到左:

x = True in a in a

[False, True] in [False, True]False,所以现在 True in False 可能是类型错误或其他错误。

你能解释一下吗?

Python 链接某些运算符,包括 in.

这个:

True in a in [a]

表示

(True in a) and (a in [a])

所以如果 a 等于 [False,True],则表达式为真。


其他版本:

True in a in a
True in a in (a)

彼此等价。将 (a) 括起来不会改变其类型或值。

两者的意思都是(True in a) and (a in a),所以除非a包含自己,否则它们都是假的。