我试图将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列表,那么我不确定如何合并此元素。有没有一种有效的方法呢?
答案 0 :(得分:3)
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]]