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]

Video liên quan

Chủ Đề