Python嵌套列表迭代问题:按坐标维度执行求和运算
嵌套列表与一维列表按指定顺序求和问题
需求与问题
- 核心需求:将嵌套列表
a(内部列表视为独立维度坐标)与列表b执行求和,要求先固定b的索引j,遍历a对应内部列表的所有元素完成求和后,再切换至下一个j。 - 当前代码问题:循环顺序与索引使用错误,输出结果为
[2,6,10,3,7,11,4,8,12],不符合预期。 - 期望输出:
c = [2, 4, 6, 5, 6, 7, 8, 10, 12] - 限制条件:禁止使用numpy、pandas等外部库
现有错误代码
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] b = [1, 2, 3] c = [] def summation(one, two): for i in list(range(len(one))): for j in list(range(len(two))): summ = one[j][i] + two[j] c.append(summ) print(c) summation(a, b)
问题分析
现有代码的核心错误有两点:
- 循环顺序颠倒:先遍历
i(对应a的内部列表索引),再遍历j(b的索引),导致无法先固定b[j]再处理对应a[j]的所有元素。 - 索引逻辑错误:
one[j][i]在错误的循环顺序下,实际取的是a的列元素而非a[j]的行元素,导致求和逻辑完全偏离需求。
修正后的代码
方式一:直接遍历元素(更简洁)
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] b = [1, 2, 3] c = [] def summation(one, two): # 先固定b的索引j for j in range(len(two)): # 遍历a中第j个内部列表的所有元素 for num in one[j]: c.append(num + two[j]) print(c) summation(a, b)
方式二:使用索引遍历(更直观体现索引逻辑)
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] b = [1, 2, 3] c = [] def summation(one, two): for j in range(len(two)): # 遍历a[j]内部的每个元素索引i for i in range(len(one[j])): summ = one[j][i] + two[j] c.append(summ) print(c) summation(a, b)
修正说明
- 调整循环顺序:外层循环遍历
b的索引j,确保每次先处理完b[j]对应的所有a[j]元素求和,再切换到下一个j,完全符合需求中的顺序要求。 - 修正索引/元素获取:无论是直接遍历
one[j]的元素,还是通过one[j][i]取元素,都是针对a的第j个内部列表进行操作,和b[j]相加后得到正确的求和结果。
内容的提问来源于stack exchange,提问作者Mozy
相关产品推荐
相关产品推荐

