Python如何对两个同结构嵌套列表的对应位置元素逐位相加
实现方案
方法1:嵌套列表推导式(最简洁,无需第三方库)
直接通过两层zip遍历两个列表对应层级的元素完成相加,代码如下:
list1 = [[1,2],[3,4],[5,6]] list2 = [[10,20],[30,40],[50,60]] list3 = [[a + b for a, b in zip(sublist1, sublist2)] for sublist1, sublist2 in zip(list1, list2)] print(list3)
输出结果:
[[11, 22], [33, 44], [55, 66]]
逻辑说明:外层zip(list1, list2)每次取出两个列表相同位置的子列表,内层zip(sublist1, sublist2)取出子列表相同位置的单个元素相加,只要两个列表结构完全一致即可正常运行。
方法2:嵌套循环实现(适合新手理解逻辑)
如果对列表推导式不熟悉,可以用嵌套循环编写,逻辑更直观:
list1 = [[1,2],[3,4],[5,6]] list2 = [[10,20],[30,40],[50,60]] list3 = [] for i in range(len(list1)): sublist = [] for j in range(len(list1[i])): sublist.append(list1[i][j] + list2[i][j]) list3.append(sublist) print(list3)
运行结果和方法1完全一致。
方法3:使用numpy库(适合大规模数值运算场景)
如果是数值计算场景,引入numpy可以大幅提升运算效率:
import numpy as np list1 = [[1,2],[3,4],[5,6]] list2 = [[10,20],[30,40],[50,60]] list3 = (np.array(list1) + np.array(list2)).tolist() print(list3)
内容的提问来源于stack exchange,提问作者Adam Smith
相关产品推荐
相关产品推荐

