Unpack tuple in list comprehension

Python list comprehension, unpacking and multiple operations

Use a nested list comprehension:

result = [a for tup in y for a in tup]

Example:

>>> x = range(10) >>> y = [(i,j**2) for i,j in zip(x,x)] >>> [a for tup in y for a in tup] [0, 0, 1, 1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, 7, 49, 8, 64, 9, 81]

This will work fine for your more general case as well, or you could do it all in one step:

y = [a for i in x for a in (i, sqrt(i), i**3, some_operation_on_i, f(i), g(i))]

In case the nested list comprehensions look odd, here is how this would look as a normal for loop:

y = [] for i in x: for a in (i, sqrt(i), i**3, some_operation_on_i, f(i), g(i)): y.append(a)
>>> import itertools >>> list(itertools.chain.from_iterable(y)) [0, 0, 1, 1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, 7, 49, 8, 64, 9, 81]