刚刚发现这两种语法方式都是有效的。
哪个更有效率?
element not in list
或者:
not element in list
?
刚刚发现这两种语法方式都是有效的。
哪个更有效率?
element not in list
或者:
not element in list
?
它们的行为相同,以至于产生相同的字节码;它们同样有效。也就是说,element not in list
通常被认为是首选。PEP8 没有关于 vs. 的具体建议not ... in
,... not in
但它对not ... is
vs.有具体建议,... 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
如果x
是 in y
,它将基本上简化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
基本上只是做相反的事情(如果某事是真的,不会让它成为假的,与相反的相同点