Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 哪个更快?如果x不在或如果x不在_Python_Python 3.x_If Statement_Optimization - Fatal编程技术网

Python 哪个更快?如果x不在或如果x不在

Python 哪个更快?如果x不在或如果x不在,python,python-3.x,if-statement,optimization,Python,Python 3.x,If Statement,Optimization,哪个更快?完全一样,根本没有区别。标准运算符实际上是不在中(请参阅),不在表单中的将自动转换为7不在中 因此,如果[5,6,7]中没有7,建议使用,,这是对运算符的直接使用,并且提高了可读性。它们完全相同,因此需要相同的时间不在中只是语法上的糖分。使用dis模块,我们可以看到两者产生相同的字节码: if not 7 in [5, 6, 7]: # something if 7 not in [5, 6, 7]: # something 即使将括号添加为not(y中的x)也不

哪个更快?

完全一样,根本没有区别。标准运算符实际上是
不在
中(请参阅),
不在
表单中的
将自动转换为
7不在


因此,如果[5,6,7]中没有7,建议使用
,这是对运算符的直接使用,并且提高了可读性。

它们完全相同,因此需要相同的时间<代码>不在
中只是语法上的糖分。使用
dis
模块,我们可以看到两者产生相同的字节码:

if not 7 in [5, 6, 7]:
     # something

if 7 not in [5, 6, 7]:
    # something
即使将括号添加为
not(y中的x)
也不会改变这一点,当然,除非在括号中添加更多内容:

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

Python 3.6.7和2.7.15都经过了测试。

欢迎使用StackOverflow。这是一个你可以自己轻松测试的问题。您是否尝试过
timeit
或其他机制在您的机器上测试这两行代码?这只是可读性和个人选择的问题。如有疑问,请测量。对每个变量运行一个循环几百万次,并测量循环的总时间。比较结果。有关如何进行计时的示例,请参见例如。
>>> 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