我们知道,
a = 1
b = 2
print(not a > b)
是使用"not"关键字的正确方式,下面的代码将引发错误
a = 1
b = 2
print(a not > b)
因为"not"反转输出布尔值。
因此,根据此逻辑,检查列表中成员是否存在的正确方法应该是
a = 1
b = [2,3,4,5]
print(not a in b)
但我发现最常见的方法是
a = 1
b = [2,3,4,5]
print(a not in b)
这根据先前示例中给出的逻辑应该抛出错误。
那么,在Python3.x中使用"not in"操作符的正确方法是什么呢?
4条答案
按热度按时间ybzsozfc1#
not in
是一种特殊情况,它简化为您第一次尝试的内容。字面上简化为
not (a in b)
。它也适用于is
(略有不同,但想法相同)。等价于
not (a is b)
。Python添加这些是因为它们像英语散文一样自然流畅。另一方面,a not < b
看起来或感觉起来不自然,所以是不允许的。not in
和is not
是语法中的特例,关于not
的位置的一般规则的一个重要部分。唯一起作用的一般规则是not
总是可以用作前缀运算符(如not (a < b)
)ep6jt1vc2#
使用"not in"运算符的正确方法是什么
只有一种方法可以使用
not in
运算符。您的not a in b
使用not
运算符和in
运算符。PEP 8似乎对使用哪个操作符没有意见,但对于类似的
is not
操作符(感谢Silvio),它说:使用
is not
运算符,而不是not ... is
。虽然两个表达式在功能上相同,但前者可读性更强,也更受欢迎:因此,出于同样的原因,我认为
not in
也应该是首选。gojuced73#
not
、not in
和in
都是有效的运算符。传递性方面,not (in_expression)
也有效方法正确吗?参考Zen of Python。
csbfibhn4#
首先
not in
不是两个独立的运算符,它本质上是一个运算符,又称隶属运算符,还有一个隶属运算符in
,它比逻辑上的NOT
,AND
和OR
具有更高的优先级。print(not a in b)
-〉这实际上是第一次计算a in b
,然后将结果反转为逻辑“not”,然后打印结果。因此,根据您的示例,它应该打印为True,因为
a in b
给出False
,然后通过逻辑NOT
运算符将其反转为True
。print(a not in b)
-〉这里python检查a
是否不是b
的一部分,如果是,则返回'False',否则返回'True'。因此,根据您的示例,它应该返回
True
,因为a不是B的一部分。我认为
a not in b
比not a in b
更清楚。我建议使用成员资格算子来测试成员资格。然而,结果将保持相同的两种表达,但评估的过程是完全不同的。