I need to do the opposite of this
Multiple Tuple to Two-Pair Tuple in Python?
Namely, I have a list of tuples
[(1,2), (3,4), (5,6)]
and need to produce this
[1,2,3,4,5,6]
I would personally do this
>>> tot = []
>>> for i in [(1,2), (3,4), (5,6)]:
... tot.extend(list(i))
but I'd like to see something fancier.
The most efficient way to do it is this:
tuples = [(1,2), (3,4), (5,6)]
[item for t in tuples for item in t]
output
[1, 2, 3, 4, 5, 6]
Here is the comparison I did for various way to do it in a duplicate question.
I know someone is going to suggest this solution
sum(tuples, ())
But don't use it, it will create a new intermediate result list for each step! unless you don't care about performance and just want a compact solution. For more details check Alex's answer
In summary: sum is faster for small lists, but the performance degrades significantly with larger lists.
>>> import itertools
>>> tp = [(1,2),(3,4),(5,6)]
>>> lst = list(itertools.chain(*tp))
>>> lst
[1, 2, 3, 4, 5, 6]
Of course, if you don't need a list but an iterator, you can drop the list()
conversion call.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With