Python n个列表中的元素之和
您好,朋友们,现在我正在尝试使用相同数量的元素创建两个列表的soma,但我不想使用Zip方法,我想知道为什么会发生此错误以及如何解决它:Python n个列表中的元素之和,python,Python,您好,朋友们,现在我正在尝试使用相同数量的元素创建两个列表的soma,但我不想使用Zip方法,我想知道为什么会发生此错误以及如何解决它: l1 =[2,5,8] l2 = [4,8,0] for i in l1: for j in l2: print l1[i] + l2[j] 我得到以下错误: 6 Traceback (most recent call last): File "<stdin>", line 3, in <module> IndexEr
l1 =[2,5,8]
l2 = [4,8,0]
for i in l1:
for j in l2:
print l1[i] + l2[j]
我得到以下错误:
6
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
IndexError: list index out of range
我不明白为什么会出现这个错误,我想知道如果有n个列表,并且每个列表的元素大小都不相同,我该如何解决这个问题呢
l1 =[2,5,8]
l2 =[4,8,0]
sums = [] # initialize the list of sums.
minlen = min(len(l1), len(l2))
for i in range(minlen):
sums.append(l1[i] + l2[i])
print(sums)
[6,13,8]
使用列表理解。我假设两个列表的长度相等
l1 =[2,5,8]
l2 = [4,8,0]
sum_list = [l1[i] + l2[i] for i in range(len(l1))]
print (sum_list)
> [6, 13, 8]
使用列表理解和枚举 扩展循环:
l3 = []
for idx, item in enumerate(l1):
l3.append(l1[idx] + l2[idx])
出现错误的原因是您混淆了两种遍历列表的方法 你可以这样做
l1 =[2,5,8]
l2 = [4,8,0]
for i in l1:
for j in l2:
print i + j
或
您遇到的问题是,使用迭代列表的方法(对于l1中的i),我将等于l1中的第一个元素,然后等于第二个元素,以此类推。
这意味着你试图访问l1的第二个、第五个和第八个索引
对于范围l1中的i,l1[i]将等于l1的元素,然后是第二个元素,依此类推,直到它到达列表的末尾。i是l1中的元素,而不是索引,对于l2,j是相同的。l1[2]工作正常,但实际上我希望在达到6之前出现错误,因为l2[4]也是一个索引器。发布的代码无法生成输出中显示的6。它只会在一开始就直接抛出索引器。另外,如果您想按元素对数字求和,例如您希望[6,13,8]作为输出-您不想使用嵌套的for-loop。正如我发布的那样,l3=[l1[i]+l2[i]for i in rangelenl1],我不确定是否有更好的参数可以替代enumerateitem is的RangeLenGondunused@Bazingaa我知道这一点,只是用它作为索引,不希望得到和你们一样的答案,但在使用rangelen之前,我被告知这是一种不好的做法,尽管我在这里同意这很有意义
l3 = []
for idx, item in enumerate(l1):
l3.append(l1[idx] + l2[idx])
l1 =[2,5,8]
l2 = [4,8,0]
for i in l1:
for j in l2:
print i + j
l1 =[2,5,8]
l2 = [4,8,0]
for i in range(len(l1)):
for j in range(len(l2)):
print l1[i] + l2[j]