(a不在b中)和(没有a在b中)的区别。Python
你好,有人能解释一下Python中“in”这个操作符是怎么工作的吗?
我现在正在处理下面的例子:
print ('a' not in ['a', 'b']) # outputs False
print (not 'a' in ['a', 'b']) # outputs False -- how ???
print ('c' not in ['a', 'b']) # outputs True
print (not 'c' in ['a', 'b']) # outputs True
print (not 'a') # outputs False
# ok is so then...
print (not 'a' in ['b', False]) # outputs True --- why ???
我现在很好奇它是怎么做到的。如果有人知道,请分享一下你的知识。谢谢 =)
3 个回答
-1
这段代码是 print (not 'a' in ['a', 'b'])
,我们可以一步步来理解。
首先,not 'a'
这个部分单独来看,结果是 False
。这是因为在编程里,除了0、None、False、空列表和空字典以外,其他的东西都被认为是 True
。
接下来,我们看 False in ['a','b']
。这里的意思是问“假(False)在这个列表 ['a', 'b'] 里吗?”答案是 False
,因为列表里没有假这个值。
最后,我们再看 not 'a'
,它还是 False
。所以当我们问 False in ['b', False]
时,结果是 True
,因为列表里有一个假(False)。
2
这个 not
关键字基本上是把这里返回的布尔值“反转”一下。
在第一个例子中,a
在数组里,所以结果是对的(true),但是 not true
就变成错的(false)。所以结果是错的。
在第二个例子中,a
不在数组里,所以结果是错的(false),但是 not false
就变成对的(true)。所以结果是对的。
9
in
的优先级比 not
高。这意味着在判断一个东西是否在另一个东西里面时,会先进行这个检查,然后再根据需要对结果进行否定。比如说,'a'
不在 ['b', False]
这个列表里,所以检查的结果是 False
。接着,这个 False
被否定后,就变成了 True
。