如何在列表中压缩列表

Vij*_*hew 81 python functional-programming

我想压缩以下列表列表:

>>> zip([[1,2], [3,4], [5,6]])
[[1,3,5], [2,4,6]]
Run Code Online (Sandbox Code Playgroud)

zip只有将列表拆分为单个组件时,才能通过当前实现实现此目的:

>>> zip([1,2], [3,4], [5,6])
   (1, 3, 5), (2, 4, 6)]
Run Code Online (Sandbox Code Playgroud)

无法弄清楚如何拆分列表并将各个元素传递给zip.功能性溶液是优选的.

Mar*_*ers 132

试试这个:

>>> zip(*[[1,2], [3,4], [5,6]])
[(1, 3, 5), (2, 4, 6)]
Run Code Online (Sandbox Code Playgroud)

请参阅解压缩参数列表:

当参数已经在列表或元组中但需要为需要单独位置参数的函数调用解包时,会发生相反的情况.例如,内置的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]
Run Code Online (Sandbox Code Playgroud)

  • 有关其工作原理,请参见http://docs.python.org/tutorial/controlflow.html#unpacking-argument-lists. (4认同)
  • 如果您有一个包含百万条目的列表,我想看一个替代方案.在函数调用中解包一百万个项目可能不是一个好主意... (2认同)