您好朋友,我现在正在尝试使用相同数量的元素制作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个列表并且每个列表没有相同大小的元素
答案 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
的元素,然后等于第二个元素,依此类推,直到到达列表的末尾。