我在python中有两个数字列表,如下所示:
a = [ [1000,1], [2000,2], [3000,3] ]
b = [ [1000,5], [2000,6], [3000,7] ]
第一列将始终相同。我想将第二列添加到一起形成第三个列表c,其中:
c =[ [1000,6], [2000,8], [3000,10] ]
我尝试过使用列表推导这样做,但是我在使用2d列表时遇到了正确的语法问题。
由于
修改 好的,这是我尝试这个的最佳尝试。我忘了拉链功能了:
c = [[x[0],x[1] + y[1]] for x,y in (a,b)]
答案 0 :(得分:3)
结合zip()
函数的列表理解将起到作用:
c = [[aa[0], aa[1] + bb[1]] for aa, bb in zip(a, b)]
答案 1 :(得分:1)
您的数据结构看起来更适合作为词典,因为子列表中的第一个元素似乎充当键。首先,我建议你的数据如下:
a = {1000: 1, 2000: 2, 3000: 3}
b = {1000: 5, 2000: 6, 3000: 7}
拥有更适当考虑的数据结构的一个优点是,python通常会有一个很好的内置来做你想做的事情。在这种情况下,collections
模块非常有用:
from collections import Counter
c = dict(Counter(a) + Counter(b))
这给你一个c看起来像这样:
{1000: 6, 2000: 8, 3000: 10}
答案 2 :(得分: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]