相关疑难解决方法(0)

可以在列表上加快速度

这是莫名其妙的后续这个问题

首先,你会注意到你不能sum在一个字符串列表上执行连接它们,python告诉你使用它str.join,这是一个很好的建议,因为无论你如何使用+字符串,性能都很糟糕.

"不能使用sum"限制不适用于list,但是,这itertools.chain.from_iterable是执行此类列表展平的首选方法.

但是sum(x,[])什么时候x列表清单肯定是坏的.

但是它应该保持这种状态吗?

我比较了3种方法

import time
import itertools

a = [list(range(1,1000)) for _ in range(1000)]

start=time.time()
sum(a,[])
print(time.time()-start)

start=time.time()
list(itertools.chain.from_iterable(a))
print(time.time()-start)


start=time.time()
z=[]
for s in a:
    z += s
print(time.time()-start)
Run Code Online (Sandbox Code Playgroud)

结果:

  • sum()在列表中:10.46647310256958.好的,我们知道.
  • itertools.chain:0.07705187797546387
  • 使用就地添加的自定义累计金额:0.057044029235839844(可以比itertools.chain您看到的更快)

所以sum落后了,因为它result = result + b代替了result += b

所以现在我的问题是:

为什么不能sum在可用时使用这种累积方法?

(这对于现有的应用程序来说是透明的,并且可以使用sum内置的内容来有效地压缩列表)

python performance sum list

6
推荐指数
1
解决办法
104
查看次数

标签 统计

list ×1

performance ×1

python ×1

sum ×1