1

私は次のようにPythonで番号の2つのリストを持っています:

a = [ [1000,1], [2000,2], [3000,3] ]
b = [ [1000,5], [2000,6], [3000,7] ] 

最初の列は常に同じになります。2番目の列を一緒に追加して3番目のリストを作成したいと思いますcここで:

c  =[ [1000,6], [2000,8], [3000,10] ]

リスト内包表記を使用してこれを実行しようとしましたが、2Dリストを使用するための構文を正しく取得できません。

ありがとう

編集: わかりました、これがこれを試すための私の最善の試みでした。zip機能を忘れました:

c = [[x[0],x[1] + y[1]] for x,y in (a,b)]
4

3 に答える 3

3

関数と組み合わせたリスト内包zip()は、トリックを行います:

c = [[aa[0], aa[1] + bb[1]] for aa, bb in zip(a, b)]
于 2013-02-24T14:44:13.173 に答える
1

アイテムが整数(または浮動小数点数)の場合、Numpy配列を使用できます。

import numpy as np

aa = np.array([[ 1000, 1 ],  [ 2000, 2 ], [ 3000, 3 ]])
bb = np.array([[ 1000, 5 ],  [ 2000, 6 ], [ 3000, 7 ]])
cc = np.array(aa)
cc[:,1] += bb[:,1]
于 2013-02-24T14:56:51.027 に答える
1

サブリストの最初の要素がキーとして機能しているように見えるため、データ構造は辞書としてより適切に機能するように見えます。まず、データは次のようになります。

a = {1000: 1, 2000: 2, 3000: 3}
b = {1000: 5, 2000: 6, 3000: 7}

より適切に考え抜かれたデータ構造を持つことの利点の1つは、Pythonには通常、あなたが探していることを実行するための優れた組み込みがあります。この場合、collectionsモジュールは非常に役立ちます。

from collections import Counter
c = dict(Counter(a) + Counter(b))

これにより、ACは次のようになります。

{1000: 6, 2000: 8, 3000: 10}
于 2013-02-24T14:56:48.613 に答える