来自in运算子的意外结果-Python

约翰·戈登(John Gordon):
>>> item = 2
>>> seq = [1,2,3]
>>> print (item in seq)
True
>>> print (item in seq is True)
False

为什么第二条print语句输出False

蒂姆·彼得斯(Tim Peters):

in并且is是Python中的比较运算符,在这方面与<和相同==一般来说,

expr1 <comparison1> expr2 <comparison2> expr3

被视为

(expr1 <comparison1> expr2) and (expr2 <comparison2> expr3)

除了那只expr2评估一次。这就是为什么,例如

0 <= i < n

可以正常工作。但是,它适用于任何链式比较运算符。在您的示例中

item in seq is True

被视为

(item in seq) and (seq is True)

seq is True部分为False,因此整个表达式为False。为了获得您可能想要的目的,请使用括号来更改分组:

print((item in seq) is True)

单击此处获取文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章