Python:运行列表中包含的列表的每个第n个元素的函数

时间:2014-02-16 12:38:11

标签: python list map

在Python中,我们有一个列表列表。例如:

a1 = [[1,4,3,5,6],[6,7,5,3,12],[1,6,4,1,2],[1,9,4,2,1]]

a2 = [[4,3,5,6],[6,7,5,12],[1,6,4,2],[1,9,2,1],[3,2,5,11]]

a的长度和内部列表的长度都可能不同。但是所有内部列表总是具有相同的长度。

我想将一些功能应用于由每个列表的第n个元素组成的所有列表。

例如考虑a2,我想迭代地将一个函数应用于列表[4,6,1,1,3](第一个元素列表),然后列表[3] ,7,6,9,2](第二要素清单)等......

这个想法类似于函数:

map(a2, my_function)

除了my_function不应该应用于每个内部列表,而应该应用于每个第n个元素列表。

希望有意义!

执行此类操作的最佳方式是什么?

1 个答案:

答案 0 :(得分:6)

zip使用* operator

>>> a1 = [[1,4,3,5,6],[6,7,5,3,12],[1,6,4,1,2],[1,9,4,2,1]]
>>> a2 = [[4,3,5,6],[6,7,5,12],[1,6,4,2],[1,9,2,1],[3,2,5,11]]

>>> zip(*a1)
[(1, 6, 1, 1), (4, 7, 6, 9), (3, 5, 4, 4), (5, 3, 1, 2), (6, 12, 2, 1)]
>>> zip(*a2)
[(4, 6, 1, 1, 3), (3, 7, 6, 9, 2), (5, 5, 4, 2, 5), (6, 12, 2, 1, 11)]

>>> map(sum, zip(*a1)) # [1+6+1+1, 4+7+6+9, ...]
[9, 26, 16, 11, 21]