在 Python 中哪个更有效:"键不在列表中"或"不在列表中键"?



刚刚发现两种语法方式都是有效的。

哪个效率更高?

element not in list

或:

not element in list

它们的行为相同,以至于产生相同的字节码;它们同样高效。也就是说,element not in list通常被认为是首选。PEP8 没有关于not ... in... not in,但它适用于not ... is... is not,它更喜欢后者:

使用运算符is not而不是not ... is。虽然这两个表达式在功能上相同,但前者更具可读性和首选性。

为了显示性能的等效性,快速字节码检查:

>>> import 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

如果xy,它基本上会简化为not True即:

>>> not True
False

另一方面x not in y只是直接检查not in

要查看时间(总是非常相似(:

>>> import timeit
>>> timeit.timeit(lambda: 1 not in [1,2,3])
0.24575254094870047
>>> timeit.timeit(lambda: not 1 in [1,2,3])
0.23894292154022878
>>> 

顺便说一句,not基本上只是做相反的事情(如果某事是真的,不会让它成为假的,与相反的点相同

查看not运算符

最新更新