【问题标题】:What is the precedence of the "in" operator?“in”运算符的优先级是什么?
【发布时间】:2020-07-21 15:35:39
【问题描述】:

今天在这个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 python-3.x operators boolean-logic


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-10-25
    • 2018-06-21
    • 1970-01-01
    • 2017-10-13
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多