检查列表中是否存在项目时,为什么此代码不起作用 - 如果列表中的项目== False:

时间:2013-03-11 10:45:30

标签: python

考虑这个清单:

list = [1,2,3,4,5]

我想检查此列表中是否不存在数字9。有两种方法可以做到这一点。

方法1:此方法有效!

if not 9 in list: print "9 is not present in list"

方法2:此方法不起作用。

if 9 in list == False: print "9 is not present in list"

有人可以解释为什么方法2不起作用吗?

2 个答案:

答案 0 :(得分:16)

这是由于comparison operator chaining。来自文档:

  

比较可以任意链接,例如,x < y <= z等同于x < y and y <= z,但y仅评估一次(但在两种情况下z都未评估所有x < y被发现为假的时候。

您假设9 in list == False表达式执行为(9 in list) == False,但情况并非如此。

相反,python将其评估为(9 in list) and (list == False),而后者永远不会为True。

您确实想要使用not in运算符,避免命名变量list

if 9 not in lst:

答案 1 :(得分:3)

应该是:

if (9 in list) == False: print "9 is not present in list"