首页 > 解决方案 > “in”运算符的优先级是什么?

问题描述

今天在这个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]True,又True in [False, True]True

x应该如此True。但是当我运行程序时它说False

现在让我们从右到左:

x = True in a in a

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

你能解释一下吗?

标签: pythonpython-3.xoperatorsboolean-logic

解决方案


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包含自身,否则它们都是错误的。


推荐阅读