在检查列表中是否不存在项时,为什么这个代码不工作 - if item in list == False:
考虑这个列表:
list = [1,2,3,4,5]
我想检查一下这个列表里有没有数字9。如果没有的话,我有两种方法可以做到这一点。
方法一:这个方法是有效的!
if not 9 in list: print "9 is not present in list"
方法二:这个方法是无效的。
if 9 in list == False: print "9 is not present in list"
有人能解释一下为什么方法二不管用吗?
2 个回答
4
应该是:
如果列表中没有9,就打印 "9不在列表中"
19
这是因为有一种叫做比较运算符链的特性。根据文档的解释:
比较可以随意串联,比如说
x < y <= z
实际上等同于x < y and y <= z
,唯一的区别是y
只会被计算一次(但在x < y
为假时,z
根本不会被计算)。
你可能认为 9 in list == False
这个表达式是按 (9 in list) == False
来执行的,但实际上并不是这样。
实际上,Python 是把它当作 (9 in list) and (list == False)
来计算的,而后面的部分永远不会为真。
你其实应该使用 not in
运算符,并且避免把你的变量命名为 list
:
if 9 not in lst: