如何在列表中压缩列表

时间:2010-11-06 06:59:28

标签: python functional-programming

我想压缩以下列表列表:

>>> zip([[1,2], [3,4], [5,6]])
[[1,3,5], [2,4,6]]

只有当列表被拆分为单独的组件时,才能通过当前的zip实现来实现:

>>> zip([1,2], [3,4], [5,6])
   (1, 3, 5), (2, 4, 6)]

无法弄清楚如何拆分列表并将各个元素传递给zip。功能性解决方案是首选。

1 个答案:

答案 0 :(得分:123)

试试这个:

>>> zip(*[[1,2], [3,4], [5,6]])
[(1, 3, 5), (2, 4, 6)]

请参阅Unpacking Argument Lists

  

当参数已经在列表或元组中但需要为需要单独位置参数的函数调用解包时,会发生相反的情况。例如,内置的range()函数需要单独的start和stop参数。如果它们不能单独使用,请使用* -operator编写函数调用以从列表或元组中解压缩参数:

>>> range(3, 6)             # normal call with separate arguments
[3, 4, 5]
>>> args = [3, 6]
>>> range(*args)            # call with arguments unpacked from a list
[3, 4, 5]