Python如何将两个列表中的整数按对应位置相加
Python 中列表使用+运算符默认执行拼接操作,不会进行逐元素运算,要实现对应位置相加、短列表缺失位默认补0的需求,有以下几种常用解决方案:
方案1:使用itertools.zip_longest(最简洁)
该方法不需要手动处理列表长度,缺失位直接指定填充值即可:
from itertools import zip_longest lst = [1, 1, 2] lst2 = [1, 1] res = [a + b for a, b in zip_longest(lst, lst2, fillvalue=0)]
运行后res的值就是你需要的[2, 2, 2]。
方案2:原生Python实现(无需导入依赖)
手动将两个列表补0到相同长度,再逐元素相加:
lst = [1, 1, 2] lst2 = [1, 1] max_len = max(len(lst), len(lst2)) # 补0到相同长度 lst_pad = lst + [0] * (max_len - len(lst)) lst2_pad = lst2 + [0] * (max_len - len(lst2)) # 逐元素相加 res = [a + b for a, b in zip(lst_pad, lst2_pad)]
方案3:使用numpy实现(适合大规模数值计算场景)
如果你的场景涉及大量数值运算,可以用numpy的数组广播特性实现:
import numpy as np lst = [1, 1, 2] lst2 = [1, 1] max_len = max(len(lst), len(lst2)) # 转换为数组并补0 arr1 = np.pad(np.array(lst), (0, max_len - len(lst)), constant_values=0) arr2 = np.pad(np.array(lst2), (0, max_len - len(lst2)), constant_values=0) res = (arr1 + arr2).tolist()
内容的提问来源于stack exchange,提问作者Xavier Goeas
相关产品推荐
相关产品推荐

