如何压缩列表中的列表


91

我想压缩以下列表列表:

>>> 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。优选功能性解决方案。

Answers:


146

试试这个:

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

请参阅解压缩参数列表

当参数已经在列表或元组中,但需要针对需要单独的位置参数的函数调用进行解压缩时,就会发生相反的情况。例如,内置的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]

4
请参阅docs.python.org/tutorial/…以了解其工作原理。
阿米尔

2
如果您有一个包含一百万个条目的列表,我想看看替代方法。在一个函数调用中解压缩一百万个项目可能不是一个好主意……
Blixt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.