python语句中"not"的位置对性能的影响

Ric*_*ann 1 python list boolean-operations

在我目前正在使用python3开发的应用程序中,我经常使用类似的语句

elem_in_list = elem in list
Run Code Online (Sandbox Code Playgroud)

但有时我需要检查元素是否不在列表中.是否有性能差异

elem_not_in_list = not elem in list
Run Code Online (Sandbox Code Playgroud)

elem_not_in_list = elem not in list
Run Code Online (Sandbox Code Playgroud)

还是一样的?其中一个符号更可取吗?

use*_*ica 13

这些表达式编译为完全相同的字节码,因此它们的效率完全相同.not in往往更具可读性,但这是一个意见问题.

>>> import dis
>>> def f(x, y):
...     return not x in y
...
>>> def g(x, y):
...     return x not in y
...
>>> dis.dis(f)
  2           0 LOAD_FAST                0 (x)
              3 LOAD_FAST                1 (y)
              6 COMPARE_OP               7 (not in)
              9 RETURN_VALUE
>>> dis.dis(g)
  2           0 LOAD_FAST                0 (x)
              3 LOAD_FAST                1 (y)
              6 COMPARE_OP               7 (not in)
              9 RETURN_VALUE
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.我不知道'dis`.这似乎非常有用. (2认同)