Python:一起添加列表

时间:2014-05-17 16:04:00

标签: python list

我试图将k列表的最后四个元素一起添加到元素中,因为这些列表具有相同的i[0]值。

lst = [[1,1,1],[2,1,2],[2,2,1],[3,4,1],[3,4,5],[3,1,0]]

Output = [[1,1,1],[2,3,3],[3,9,6]]

我知道我应该使用:

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

我的问题是,如果可能存在具有相同i[0]值的k列表,那么我不确定如何合并此元素。有没有一种有效的方法呢?

1 个答案:

答案 0 :(得分:3)

使用itertools.groupby()

from itertools import groupby
from operator import itemgetter

[[k] + [sum(col) for col in zip(*g)[1:]] for k, g in groupby(lst, itemgetter(0))]

zip(*iterable)调用允许我们对每列的组值求和; [1:]切片让我们忽略第一列。

演示:

>>> from itertools import groupby
>>> from operator import itemgetter
>>> lst = [[1, 1, 1], [2, 1, 2], [2, 2, 1], [3, 4, 1], [3, 4, 5], [3, 1, 0]]
>>> [[k] + [sum(col) for col in zip(*g)[1:]] for k, g in groupby(lst, itemgetter(0))]
[[1, 1, 1], [2, 3, 3], [3, 9, 6]]