Ger*_*ncy 46 python performance
有没有更快的方法来交换Python中的两个列表元素
L[a], L[b] = L[b], L[a]
Run Code Online (Sandbox Code Playgroud)
Ign*_*ams 126
看起来Python编译器使用这个结构优化了临时元组:
import dis
def swap1():
a=5
b=4
a, b = b, a
def swap2():
a=5
b=4
c = a
a = b
b = c
print 'swap1():'
dis.dis(swap1)
print 'swap2():'
dis.dis(swap2)
Run Code Online (Sandbox Code Playgroud)
swap1():
6 0 LOAD_CONST 1 (5)
3 STORE_FAST 0 (a)
7 6 LOAD_CONST 2 (4)
9 STORE_FAST 1 (b)
8 12 LOAD_FAST 1 (b)
15 LOAD_FAST 0 (a)
18 ROT_TWO
19 STORE_FAST 0 (a)
22 STORE_FAST 1 (b)
25 LOAD_CONST 0 (None)
28 RETURN_VALUE
swap2():
11 0 LOAD_CONST 1 (5)
3 STORE_FAST 0 (a)
12 6 LOAD_CONST 2 (4)
9 STORE_FAST 1 (b)
13 12 LOAD_FAST 0 (a)
15 STORE_FAST 2 (c)
14 18 LOAD_FAST 1 (b)
21 STORE_FAST 0 (a)
15 24 LOAD_FAST 2 (c)
27 STORE_FAST 1 (b)
30 LOAD_CONST 0 (None)
33 RETURN_VALUE
Run Code Online (Sandbox Code Playgroud)
两个负载,一个ROT_TWO和两个保存,三个负载和三个保存.您不太可能找到更快的机制.
| 归档时间: |
|
| 查看次数: |
58702 次 |
| 最近记录: |