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