2017-04-04 3 views
0

異なる長さのリストを要素ごとに追加する方法は?
不足要素が「0」であると仮定します。
注:LEN(a)は、常に以下LENに等しくなる(B)異なる長さの2つのリストの要素的な追加?

例:

a=[1,2,3] 
b=[1,2,3,4,5] 

所望の結果:

result=[2,4,6,4,5] 

Iはほとんどできなくかなり

result=[sum(n) for n in zip(a,b)] 

「0」要素を自動的に追加することは可能ですか(list a)にすると、zipを実行する前に、(list b)と同じ長さになりますか?それが良いpythonic解決策なら、どのようにそれを行うでしょうか?

答えて

3

のように最短で停止しない代替zipがあります。あなたは短いリストのフィル値を指定することができます。

from itertools import zip_longest 

result = [sum(n) for n in zip_longest(a, b, fillvalue=0)] 
2

あなたはizip_longestを使用することができます。

>>> izip_longest(a,b,fillvalue=0) 
<itertools.izip_longest object at 0x10bbd2520> 
>>> list(_) 
[(1, 1), (2, 2), (3, 3), (0, 4), (0, 5)] 

次に、あなたが行うことができます:

>>> [sum(t) for t in izip_longest(a,b,fillvalue=0)] 
[2, 4, 6, 4, 5] 
-1

あなたはこのようなゼロでパッドAすることができます和を使用すると

a=[1,2,3] 
b=[1,2,3,4,5] 
a[:] = [a[i] if i < len(a) else 0 for i,j in enumerate(b)] 
result=[sum(n) for n in zip(a,b)] 
print result 

の結果は

[2, 4, 6, 4, 5] 
関連する問題