Sal*_*osa 5 python performance if-statement python-3.x
假设我有以下,这是更好,更快,更Pythonic方法,为什么?
if x == 2 or x == 3 or x == 4:
do following...
Run Code Online (Sandbox Code Playgroud)
要么 :
if x in (2, 3, 4):
do following...
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 12
在Python 3(3.2及更高版本)中,您应该使用一组:
if x in {2, 3, 4}:
Run Code Online (Sandbox Code Playgroud)
因为集合成员资格是O(1)测试,而不是O(N)的最坏情况性能,用于使用单独的or相等测试或使用元组中的成员资格进行测试.
在Python 3中,set literal将被优化为使用frozenset常量:
>>> import dis
>>> dis.dis(compile('x in {1, 2, 3}', '<file>', 'exec'))
1 0 LOAD_NAME 0 (x)
3 LOAD_CONST 4 (frozenset({1, 2, 3}))
6 COMPARE_OP 6 (in)
9 POP_TOP
10 LOAD_CONST 3 (None)
13 RETURN_VALUE
Run Code Online (Sandbox Code Playgroud)
请注意,此优化已添加到Python 3.2和Python 2或3.0或3.1中,您最好使用元组.对于少量元素,每次执行的集创建都会使查找时间的差异无效.
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |