(a不在b中)和(没有a在b中)的区别。Python

5 投票
3 回答
4405 浏览
提问于 2025-04-30 04:57

你好,有人能解释一下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

撰写回答