Python两个列表元素相加存入第三列表 输出为空如何解决
问题原因
- 未给
New1、New2赋值具体数值元素,属于未定义变量,实际运行会直接抛出变量未定义报错,你大概率漏贴了两个列表的前置赋值代码。 - for循环语法和逻辑完全错误:
range(len(New1), len(New2))生成的是单个数值的迭代序列,不能同时赋值给i、j两个变量,会直接抛出解包失败报错;且对应位置相加需要遍历同一个索引值,而非取两个不同下标。 - 若你实际已给
New1、New2赋值,当len(New1) >= len(New2)时,这个range生成的是空序列,循环一次都不会执行,所以New3始终是空列表,最终输出[] 0,这是你得到当前结果的直接原因。
解决方法
首先给New1、New2完成赋值,再根据场景选择对应写法即可:
场景1:两个列表长度确定相等
# 示例赋值,可替换为你自己的列表数值 New1 = [1, 3, 5, 7] New2 = [2, 4, 6, 8] New3 = [] # 遍历同一个索引 for idx in range(len(New1)): Sum = New1[idx] + New2[idx] New3.append(Sum) print(New3) print(len(New3))
场景2:两个列表长度可能不一致,按短列表长度相加
更简洁的zip写法:
New1 = [1, 3, 5, 7, 9] New2 = [2, 4, 6] New3 = [] for i, j in zip(New1, New2): Sum = i + j New3.append(Sum) print(New3) print(len(New3))
场景3:按长列表长度相加,短列表不足位置补0
from itertools import zip_longest New1 = [1, 3, 5, 7, 9] New2 = [2, 4, 6] New3 = [] for i, j in zip_longest(New1, New2, fillvalue=0): Sum = i + j New3.append(Sum) print(New3) print(len(New3))
内容的提问来源于stack exchange,提问作者user1639130
相关产品推荐
相关产品推荐

