考虑这个列表:
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不起作用吗?
考虑这个列表:
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不起作用吗?
这是由于比较运算符链接。从文档中:
比较可以任意链接,例如,
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:
它应该是:
if (9 in list) == False: print "9 is not present in list"