如何在Python中同时对多个列表的对应元素求和?
在Python中对任意数量列表的对应元素求和
基础场景(所有列表长度一致)
如果能确定所有输入列表的长度相同,用zip()配合列表推导式就能快速实现:
def sum_corresponding_elements(*lists): return [sum(group) for group in zip(*lists)] # 示例调用 list_a = [3, 3, 1, 1, 1, 1, 1] list_b = [1, 1, 4, 5, 6, 7, 8] print(sum_corresponding_elements(list_a, list_b)) # 输出: [4, 4, 5, 6, 7, 8, 9]
原理说明
zip(*lists)会把传入的所有列表按索引位置打包成元组,比如第一个元组是(list_a[0], list_b[0]),以此类推。- 对每个元组调用
sum(),就能得到对应位置元素的和,最后用列表推导式生成结果列表。
处理长度不一致的列表
如果输入列表的长度可能不同,且希望以最长列表的长度为准(缺失位置补0),可以用itertools.zip_longest():
from itertools import zip_longest def sum_corresponding_elements(*lists): return [sum(group) for group in zip_longest(*lists, fillvalue=0)] # 示例调用(加入一个短列表) list_c = [2, 3] print(sum_corresponding_elements(list_a, list_b, list_c)) # 输出: [6, 7, 5, 6, 7, 8, 9]
原理说明
zip_longest()会以最长的输入列表为基准,对较短列表的缺失位置填充指定的fillvalue(这里设为0,适合求和场景)。- 后续的求和逻辑和基础场景一致。
内容的提问来源于stack exchange,提问作者spearritte
相关产品推荐
相关产品推荐

