4

考虑这个列表:

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

2 回答 2

18

这是由于比较运算符链接。从文档中:

比较可以任意链接,例如,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:
于 2013-03-11T10:49:57.737 回答
3

它应该是:

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

于 2013-03-11T10:49:07.050 回答