How to zip lists in a list

PythonFunctional Programming

Python Problem Overview


I want to zip the following list of lists:

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

This could be achieved with the current zip implementation only if the list is split into individual components:

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

Can't figure out how to split the list and pass the individual elements to zip. A functional solution is preferred.

Python Solutions


Solution 1 - Python

Try this:

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

See Unpacking Argument Lists:

> The reverse situation occurs when the arguments are already in a list or tuple but need to be unpacked for a function call requiring separate positional arguments. For instance, the built-in range() function expects separate start and stop arguments. If they are not available separately, write the function call with the *-operator to unpack the arguments out of a list or tuple:

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionVijay MathewView Question on Stackoverflow
Solution 1 - PythonMark ByersView Answer on Stackoverflow