在 Python 中处理两个或多个连续成员运算符的顺序是什么?

Aas*_*jan 3 python membership operators python-3.x

>>> g = [1, True, 5]
>>> print(1 in g in g)
False

>>> g.append(g)
>>> print(1 in g in g)
True
Run Code Online (Sandbox Code Playgroud)

为什么第一个片段在列表中并且也在列表中False时作为输出给出?1True

True当我附加g到它时,为什么它作为输出给出?

a_g*_*est 8

这是运算符链接,将扩展为1 in g and g in g. 所以只有在你附加g到自己之后,这才成为真的。

您可以使用括号来得到你想要的行为:(1 in g) in g。这会强制1 in g首先评估该部分(但是in比较相等性,True == 1因此True实际上不需要成为列表的一部分)。