鉴于:ListA = [1,2,3,4,5]
ListB = [10,20,30,40,50,60,70]
我该如何使它成为ListC = [11,22,33,44,55,60,70]
,其中C[0] = B[0] + A[0]
。。。C[5] = nil + B[5]
等等?在这种情况下,我不能简单地使用for循环,因为与IndexError
相比,ListB
还有两个条目
最佳答案
您可以使用itertools.zip_longest(..., fillvalue=0)
:
from itertools import zip_longest
[x + y for x, y in zip_longest(ListA, ListB, fillvalue=0)]
# [11, 22, 33, 44, 55, 60, 70]
# or in python 2
from itertools import izip_longest
[x + y for x, y in izip_longest(ListA, ListB, fillvalue=0)]
# [11, 22, 33, 44, 55, 60, 70]
如果您喜欢numpy解决方案,可以使用
numpy.pad
将两个列表填充到相同的长度:import numpy as np
def add_np(A, B):
m = max(len(A), len(B))
return np.pad(A, (0, m-len(A)), 'constant') + np.pad(B, (0, m-len(B)), 'constant')
add_np(ListA, ListB)
# array([11, 22, 33, 44, 55, 60, 70])
关于python - 如何在Python中以相同的顺序将一个列表中的所有整数与长度不同的另一个列表中的整数相加?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47935421/