如何总结两个列表N元素
问题描述:
我需要添加两个数字列表。当一个列表大于另一个时,我得到错误“IndexError:列表索引超出范围”。该错误发生在resultado = v1[i] + v2[i]
行,但我不知道如何解决它。如何总结两个列表N元素
我的代码是:
def suma(A, B):
if len(A) > len(B):
v1 = A
v2 = B
else:
v1 = B
v2 = A
v3 = []
i = 0
for i in range(len(v1)):
resultado = v1[i] + v2[i]
v3.append(resultado)
for j in range(len(v1), len(v2)):
v3.append(v2[j])
return v3
vectorA = []
vectorB = []
x = 1
while x !=0:
print "Ingrese los datos para el primer vector (0 para finalizar)"
x = input("-->>")
if x !=0:
vectorA.append (x)
print "=" * 30
x = 1
while x !=0:
print "Ingrese los datos para el segundo vector (0 para finalizar)"
x = input("-->>")
if x !=0:
vectorB.append (x)
print "=" * 30
print vectorA
print vectorB
print "=" * 30
print "A) SUMA DE VECTORES"
print "=" * 30
suma(vectorA, vectorB)
print suma
答
>>> import itertools
>>> A = [1, 2, 3]
>>> B = [10, 11]
>>> [a + b for a, b in itertools.izip_longest(A, B, fillvalue=0)]
[11, 13, 3]
所以,
def suma(A, B):
return [a + b for a, b in itertools.izip_longest(A, B, fillvalue=0)]
答
def suma(A, B):
return map(sum, itertools.izip_longest(A,B, fillvalue=0))
答
这是怎么回事,帮助您更与在这个阶段学习Python的大概是这样的:
,因为您使用长度越长名单到两个列表遍历实际的错误造成的。这是很容易通过改变
for i in range(len(v1)):
分解成
for i in range(len(v2)):
因为,v2
是上面的比较后的短名单。你也应该更换
for j in range(len(v1), len(v2)):
v3.append(v2[j])
通过
for j in range(len(v2), len(v1)):
v3.append(v1[j])
因为,毕竟,len(v2)
比len(v1)
小。最后替换
suma(vectorA, vectorB)
print suma
通过
print suma(vectorA, vectorB)
具有印刷结果。您可以在下面找到工作脚本。
def suma(A, B):
if len(A) > len(B):
v1 = A
v2 = B
else:
v1 = B
v2 = A
v3 = []
i = 0
for i in range(len(v2)):
resultado = v1[i] + v2[i]
v3.append(resultado)
for j in range(len(v2), len(v1)):
v3.append(v1[j])
return v3
vectorA = []
vectorB = []
x = 1
while x !=0:
print "Ingrese los datos para el primer vector (0 para finalizar)"
x = input("-->>")
if x !=0:
vectorA.append (x)
print "=" * 30
x = 1
while x !=0:
print "Ingrese los datos para el segundo vector (0 para finalizar)"
x = input("-->>")
if x !=0:
vectorB.append (x)
print "=" * 30
print vectorA
print vectorB
print "=" * 30
print "A) SUMA DE VECTORES"
print "=" * 30
print suma(vectorA, vectorB)
+1实际帮助OP – georg 2013-04-06 23:00:00