什么';在Python中,`key not in list`或`not key in list`更有效?
刚刚发现这两种语法方法都是有效的 哪个更有效什么';在Python中,`key not in list`或`not key in list`更有效?,python,sequence,contains,in-operator,not-operator,Python,Sequence,Contains,In Operator,Not Operator,刚刚发现这两种语法方法都是有效的 哪个更有效 element not in list 或: 它们的行为相同,甚至产生相同的字节码;它们同样有效。也就是说,元素不在列表中通常被认为是首选元素。PEP8没有关于not。。。在与中。。。不在中,但它适用于非。。。是vs.。。。不是,并且: 使用不是运算符,而不是非运算符。。。是。虽然两个表达式在功能上完全相同,但前者更具可读性且更可取 要显示性能的等效性,请快速检查字节码: >>> import dis >>> d
element not in list
或:
它们的行为相同,甚至产生相同的字节码;它们同样有效。也就是说,
元素不在列表中
通常被认为是首选元素。PEP8没有关于not。。。在
与中。。。不在中,但它适用于非。。。是vs.。。。不是
,并且:
使用不是运算符,而不是非运算符。。。是
。虽然两个表达式在功能上完全相同,但前者更具可读性且更可取
要显示性能的等效性,请快速检查字节码:
>>> 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
如果x
在y
中,它基本上会简化为非真
,即:
>>> not True
False
另一方面,x不在y中
只是直接检查不在
要查看时间安排(总是非常相似):
顺便说一句,not
基本上只是做相反的事情(如果某件事是真的,not会使它成为假的,相反的事情也是一样的)
请参见@Downvoter为什么downvoteI没有进行向下投票,但您自己的链接显示字节码是相同的,所以…。@juanpa.arrivillaga这是真的,很抱歉,为什么只有这些,可能类似于(a不是None
或不是a是None
)等。。
>>> not True
False
>>> import timeit
>>> timeit.timeit(lambda: 1 not in [1,2,3])
0.24575254094870047
>>> timeit.timeit(lambda: not 1 in [1,2,3])
0.23894292154022878
>>>