如何遍历多维列表并计算子列表的交替元素之和?
解决多维列表交替元素求和问题
问题分析
你的需求是对多维列表中每个子列表的第0+2位元素、第1+3位元素分别求和,原代码的核心错误是遍历子列表时错误地将子列表本身当作索引处理,导致类型转换失败。
修正后的实现代码
基础循环实现(易读性高)
# 统一变量名,原问题中变量名与代码内名称不一致,这里修正为persons persons = [[222, 1, 255, 54], [105, 1, 135, 48], [397, 310, 521, 594]] person_list = [] # 直接遍历每个子列表 for sub_list in persons: # 计算两组交替元素的和 sum_0_2 = sub_list[0] + sub_list[2] sum_1_3 = sub_list[1] + sub_list[3] # 将结果依次添加到目标列表 person_list.append(sum_0_2) person_list.append(sum_1_3) print("person list", person_list)
输出结果:
person list [477, 55, 240, 49, 918, 904]
列表推导式实现(简洁高效)
如果追求代码简洁,可以用嵌套列表推导式一次性生成结果:
persons = [[222, 1, 255, 54], [105, 1, 135, 48], [397, 310, 521, 594]] person_list = [val for sub in persons for val in [sub[0]+sub[2], sub[1]+sub[3]]] print("person list", person_list)
原代码错误说明
- 循环中
for j in persons时,j是每个子列表(比如[222, 1, 255, 54]),而非索引值,用int(j)转换会直接抛出TypeError,因为列表无法转为整数。 - 不需要通过
persons[int(j)]去取元素,j本身就是当前要处理的子列表,直接对j操作即可。
内容的提问来源于stack exchange,提问作者Madesh Prasad
相关产品推荐
相关产品推荐

