2013-02-24 77 views
1

我在蟒號碼2所列出如下:如何在2個2d列表中添加第2列?

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

第一列將始終是相同的。我想第二列添加在一起,形成一個第三列表c其中:

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

我曾嘗試使用列表理解這樣做,但我麻煩的語法正確使用2D名單。

感謝

編輯: 好吧,這裏是在試圖對我最好的嘗試。我忘了ZIP功能:

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

是的,只是編輯包括它。 – nyc0202034 2013-02-24 14:48:37

回答

3

列表理解與zip()功能相結合,將這樣的伎倆:

c = [[aa[0], aa[1] + bb[1]] for aa, bb in zip(a, b)] 
+0

非常感謝老兄! – nyc0202034 2013-02-24 14:46:01

1

你的數據結構,看起來就像他們會更好地工作,字典,因爲在第一要素子列表似乎可以用作鍵。所以,首先,我建議你的數據是這樣的:

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

一個具有優勢更恰當地想出來的數據結構中,蟒蛇通常會得到一個很好的內建做你要找的內容去做。在這種情況下,collections模塊是非常有幫助的:

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

,讓你的交流看起來像這樣:

{1000: 6, 2000: 8, 3000: 10} 
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]