115

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.

0

1 Answer 1

188

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] 
Sign up to request clarification or add additional context in comments.

2 Comments

See docs.python.org/tutorial/… for how this works.
I'd like to see an alternative in case you have a list with a million entries. It might not be a good idea to unpack a million items in a function call...

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.