我想知道是否有更有效的方法来仅使用标准库修改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))