1

l1とl2という名前の2つのリストの要素(要素ごとの要素)を合計したい場合は、どうすればよいのでしょうか。

l3 =  [i + j for i, j in zip(l1,l2)]

またはリストを配列として変換し、単純な合計を実行します

from numpy import array
l3 = list(array(l1) + array(l2)) 
4

2 に答える 2

4

それはおそらくリストの大きさに依存します。

numpyは大量のデータセットを効率的に操作するように設計されていますが、ネイティブPythonの一部ではないため、一定のオーバーヘッドが発生します。

また、パフォーマンスを重視する場合は、itertools.izip速度が向上する可能性があります。


ランダムなリストの場合、[i+j for i,j in izip(l1, l2)]重要なパフォーマンスを問題にするほど大きくないことを前提として、単純さ/読みやすさのためにおそらく使用します。

于 2012-07-12T16:01:00.373 に答える
0

次のものも使用できます。

from operator import add
map(add, list1, list2)

これは、潜在的に最適化されたものを使用し、 /のoperator.add使用を回避します。これにより、入力が最短のシーケンスに切り捨てられ、エラーがサイレントに失敗します。ただし、 (well )は例外を発生させます。zipizipmapoperator.add

おそらく、純粋なPythonでできる最善のことです...

于 2012-07-12T16:19:49.157 に答える