# How to unzip a list of tuples into individual lists?

### Question

Possible Duplicate:
A Transpose/Unzip Function in Python

I have a list of tuples, where I want to unzip this list into two independent lists. I'm looking for some standardized operation in Python.

``````>>> l = [(1,2), (3,4), (8,9)]
>>> f_xxx (l)
[ [1, 3, 8], [2, 4, 9] ]
``````

I'm looking for a succinct and pythonic way to achieve this.

Basically, I'm hunting for inverse operation of `zip()` function.

1
204
5/23/2017 12:03:03 PM

Use `zip(*list)`:

``````>>> l = [(1,2), (3,4), (8,9)]
>>> list(zip(*l))
[(1, 3, 8), (2, 4, 9)]
``````

The `zip()` function pairs up the elements from all inputs, starting with the first values, then the second, etc. By using `*l` you apply all tuples in `l` as separate arguments to the `zip()` function, so `zip()` pairs up `1` with `3` with `8` first, then `2` with `4` and `9`. Those happen to correspond nicely with the columns, or the transposition of `l`.

`zip()` produces tuples; if you must have mutable list objects, just `map()` the tuples to lists or use a list comprehension to produce a list of lists:

``````map(list, zip(*l))          # keep it a generator
[list(t) for t in zip(*l)]  # consume the zip generator into a list of lists
``````
349
1/9/2019 1:10:12 PM

If you want a list of lists:

``````>>> [list(t) for t in zip(*l)]
[[1, 3, 8], [2, 4, 9]]
``````

If a list of tuples is OK:

``````>>> zip(*l)
[(1, 3, 8), (2, 4, 9)]
``````