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

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

需求:
有这样的一个原始数据 [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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容