n个列表中元素的总和python

时间:2018-09-23 14:35:52

标签: python

您好朋友,我现在正在尝试使用相同数量的元素制作2个列表的躯体,但是我不想使用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>
IndexError: list index out of range

我不明白为什么会出现此错误,我想知道如何解决如果有n个列表并且每个列表没有相同大小的元素

4 个答案:

答案 0 :(得分:1)

使用列表理解和enumerate

l3 = [l1[idx] + l2[idx] for idx, item in enumerate(l1)]
~/python/stackoverflow/9.23$ python3.7 dicta.py
[6, 13, 8]

扩展循环:

l3 = []
for idx, item in enumerate(l1):
    l3.append(l1[idx] + l2[idx])

答案 1 :(得分:0)

这是您要找的东西吗?

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]

答案 2 :(得分:0)

使用列表理解。我假设两个列表的长度相等

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]

答案 3 :(得分:0)

出现错误的原因是因为您混淆了两种遍历列表的方式。

您可以

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]

您遇到的问题是,使用遍历列表的方法-for i in l1-i将等于l1中的第一个元素,然后等于第二个,依此类推。 这意味着您正在尝试访问l1的第二,第五和第八索引。

for i in range(len(l1))l1[i]等于l1的元素,然后等于第二个元素,依此类推,直到到达列表的末尾。