1

How can I zip a list of tuples in Python?

# From
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

# To
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
shinorz0721
  • 145
  • 10
  • 2
    assuming you want to retain elements as tuple, try `list(zip(*tuples))` – rv.kvetch Oct 20 '21 at 17:29
  • 1
    reason why I am a bit confused, because in the desired transformation, `tuples` is a misleading name, as you end up with a list of lists above. – rv.kvetch Oct 20 '21 at 17:30

2 Answers2

2

Just use zip and list comprehension.

>>> tuples = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
>>> [list(i) for i in zip(*tuples)]
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

Or,

>>> tuples = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
>>> [[*i] for i in zip(*tuples)]
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Abdul Niyas P M
  • 18,035
  • 2
  • 25
  • 46
1

If you are okay with using numpy then

import numpy as np
l=[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
[tuple(i) for i in (np.array(l).transpose())]
mad_
  • 8,121
  • 2
  • 25
  • 40