考虑这个清单:
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不起作用吗?
答案 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"