在Python中有效地修改列表

时间:2015-09-24 15:56:28

标签: python performance list python-3.x mutable

我想知道是否有更有效的方法来仅使用标准库修改python中的列表。我为我的情况找到的两个最佳选择是

s = [i + k for i in l[a:b]]
l[a:b] = s
maxx = max(maxx, max(s))

for i in range(a,b):
    l[i] += k
maxx = max(maxx, max(l[a-1:b]))

第一个版本速度很快但可以使用大量内存,第二个版本需要两倍的时间但是占用了一半的内存。

完整代码与此类似

from random import randint
maxx = 0
n = 1000000
m = 11111
l = [0 for i in range(n)]
for i in range(m):
   a = randint(0, n-2)
   b = a + randint(1, n-a)
   k = randint(1, 99999)
   s = [i + k for i in l[a:b]]
   l[a:b] = s
   maxx = max(maxx, max(s))

0 个答案:

没有答案