4

したがって、サブリストを含むリストがあるとしましょう(視覚的なデモンストレーションのための配置):

[[1,2,3,4],
[1,2,3],
[0,3,4]]

そして、それらを一緒に追加して取得したい:

[2,7,10,4]

もともと、私が取り組んでいることについて、これらのリストの上限を知っていたので、すべてのサブリストを繰り返し処理し、0 のパディングを追加して、各リストを上限まで長くすることを考えていました。

result+=[0]*(len(upper_bound)-len(list))

次に使用します。

result = [sum(x) for x in zip(list1,list2)

合計を取得します。しかし、上限は非常に大きくなり (10000+ のように)、リストの数も多くなります (1000+ リストのように)。

私の質問は次のとおりです。N個の潜在的に不均一なサイズのサブリストを追加して結果のリストを作成するより効率的な方法はありますか、それとも私はあまりにも多くを求めていますか? (numpyのような派手な数値ライブラリも使用できません)

4

1 に答える 1

7

itertools.izip_longestあなたが必要とすることができます:

import itertools
lists = [[1,2,3,4],
         [1,2,3],
         [0,3,4]]
print [sum(x) for x in itertools.izip_longest(*lists, fillvalue=0)]
# prints [2, 7, 10, 4]
于 2012-11-10T05:14:45.217 に答える