Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python n个列表中的元素之和_Python - Fatal编程技术网

Python n个列表中的元素之和

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

您好,朋友们,现在我正在尝试使用相同数量的元素创建两个列表的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>
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]