在检查列表中是否不存在项时,为什么这个代码不工作 - if item in list == False:

5 投票
2 回答
43084 浏览
提问于 2025-04-17 18:40

考虑这个列表:

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:

撰写回答