相关疑难解决方法(0)

为什么 a.insert(0,0) 比 a[0:0]=[0] 慢得多?

使用列表的insert函数比使用切片分配实现相同的效果要慢得多:

> python -m timeit -n 100000 -s "a=[]" "a.insert(0,0)"
100000 loops, best of 5: 19.2 usec per loop

> python -m timeit -n 100000 -s "a=[]" "a[0:0]=[0]"
100000 loops, best of 5: 6.78 usec per loop
Run Code Online (Sandbox Code Playgroud)

(请注意,这a=[]只是设置,因此a开始时为空,但后来增长到 100,000 个元素。)

起初我想可能是属性查找或函数调用开销左右,但在末尾插入表明这是可以忽略不计的:

> python -m timeit -n 100000 -s "a=[]" "a.insert(-1,0)"
100000 loops, best of 5: 79.1 nsec per loop
Run Code Online (Sandbox Code Playgroud)

为什么可能更简单的专用“插入单个元素”功能这么慢?

我也可以在 repl.it 上重现它:

from timeit import repeat

for _ in range(3):
  for …
Run Code Online (Sandbox Code Playgroud)

python performance

70
推荐指数
1
解决办法
2143
查看次数

标签 统计

performance ×1

python ×1