Bootstrap

python列表中的元素相加_如何让列表内的元素前后相加生成新的元素?

a5f2ca58ef2180c5ab19001b11bcef0a.png
列表推导是一种优雅简洁,代码量少且能干大事儿的语法格式。

需求:

有这样的一个原始数据 [1, 2, 3, 4],暂且我们把这样的一个列表放到变量 data 里:

data = [1, 2, 3, 4]

现在的需求是,想通过列表推导,让元素内的数据前后相加,变成如下列表

data1 = [1, 3, 5, 7] # 与前面的一个元素相加
data2 = [1, 3, 6, 10] # 与前面的元素累计相加

代码实现

1、用列表推导的方式

data1= data[:1] + [x+y for x,y in zip(data[1:],data[:-1])]
data1= data[:1] + [sum(data[x:x+2]) for x in range(len(data)-1)]
data1= [sum(data[x-1:x+1]) if x>0 else data[0] for x in range(0,len(data))]
data2= [sum(data[:x]) for x in range(1,len(data)+1)]

2、使用 itertools 库

虽然列表推导比较简洁优雅,代码量少,但并不意味着是高效率,所以使用 itertools 库也 不失为一个好办法。

from itertools import accumulate
data1 = [v + (data[i-1] if i > 0 else 0) for i, v in enumerate(data)]
data2 = list(accumulate(data))
print(data1)
print(data2)
;