Skip to main content
 首页 » 编程设计

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

2025年05月04日19thcjp

在 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 个元素的列表。

希望这是有道理的!

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

请您参考如下方法:

使用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]