if not 7 in [5, 6, 7]:
# something
if 7 not in [5, 6, 7]:
# something
哪个更快?
答案 0 :(得分:4)
它们完全相同,因此花费相同的时间。 not in
只是语法糖。使用dis
模块,我们可以看到两者导致的字节码相同:
>>> dis.dis("not x in y")
1 0 LOAD_NAME 0 (x)
2 LOAD_NAME 1 (y)
4 COMPARE_OP 7 (not in)
6 RETURN_VALUE
>>> dis.dis("x not in y")
1 0 LOAD_NAME 0 (x)
2 LOAD_NAME 1 (y)
4 COMPARE_OP 7 (not in)
6 RETURN_VALUE
即使将括号添加为not (x in y)
也不会改变它,除非您当然要在括号中添加更多:
>>> dis.dis("not (x in y)")
1 0 LOAD_NAME 0 (x)
2 LOAD_NAME 1 (y)
4 COMPARE_OP 7 (not in)
6 RETURN_VALUE
>>> dis.dis("not (x in y or z)")
1 0 LOAD_NAME 0 (x)
2 LOAD_NAME 1 (y)
4 COMPARE_OP 6 (in)
6 JUMP_IF_TRUE_OR_POP 10
8 LOAD_NAME 2 (z)
>> 10 UNARY_NOT
12 RETURN_VALUE
使用Python 3.6.7和2.7.15进行了测试。
答案 1 :(得分:1)
完全相同,完全没有区别。标准运算符实际上是not in
(请参阅docs),not 7 in
格式将自动转换为7 not in
。
因此推荐的方法是if 7 not in [5, 6, 7]
,这是操作符的直接用法,并且具有提高的可读性。