python “not in”运算符的正确使用方法

jchrr9hc  于 2023-01-29  发布在  Python
关注(0)|答案(4)|浏览(235)

我们知道,

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"操作符的正确方法是什么呢?

ybzsozfc

ybzsozfc1#

not in是一种特殊情况,它简化为您第一次尝试的内容。

a not in b

字面上简化为not (a in b)。它也适用于is(略有不同,但想法相同)。

a is not b`

等价于not (a is b)。Python添加这些是因为它们像英语散文一样自然流畅。另一方面,a not < b看起来或感觉起来不自然,所以是不允许的。not inis not是语法中的特例,关于not的位置的一般规则的一个重要部分。唯一起作用的一般规则是not总是可以用作前缀运算符(如not (a < b)

ep6jt1vc

ep6jt1vc2#

使用"not in"运算符的正确方法是什么
只有一种方法可以使用not in运算符。您的not a in b使用not运算符和in运算符。
PEP 8似乎对使用哪个操作符没有意见,但对于类似的is not操作符(感谢Silvio),它说:
使用is not运算符,而不是not ... is。虽然两个表达式在功能上相同,但前者可读性更强,也更受欢迎:

# Correct:
if foo is not None:
# Wrong:
if not foo is None:

因此,出于同样的原因,我认为not in也应该是首选。

gojuced7

gojuced73#

notnot inin都是有效的运算符。传递性方面,not (in_expression)也有效
方法正确吗?参考Zen of Python

csbfibhn

csbfibhn4#

首先not in不是两个独立的运算符,它本质上是一个运算符,又称隶属运算符,还有一个隶属运算符in,它比逻辑上的NOTANDOR具有更高的优先级。
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 bnot a in b更清楚。我建议使用成员资格算子来测试成员资格。
然而,结果将保持相同的两种表达,但评估的过程是完全不同的。

相关问题