Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to zip lists in a list

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.

like image 706
Vijay Mathew Avatar asked Nov 06 '10 06:11

Vijay Mathew


People also ask

How do I zip two lists together?

Use zip() Function to Zip Two Lists in Python The zip() function can take any iterable as its argument. It's used to return a zip object which is also an iterator. The returned iterator is returned as a tuple like a list, a dictionary, or a set. In this tuple, the first elements of both iterables are paired together.

How do I zip 3 lists in Python?

Python zip three lists Python zipping of three lists by using the zip() function with as many inputs iterables required. The length of the resulting tuples will always equal the number of iterables you pass as arguments.

Can you zip a list in Python?

zip() can accept any type of iterable, such as files, lists, tuples, dictionaries, sets, and so on.


1 Answers

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] 
like image 147
Mark Byers Avatar answered Oct 29 '22 00:10

Mark Byers