poros
10/4/2015 - 2:47 PM

Nested list comprehensions

Nested list comprehensions

matrix = [[1,2,3]] * 4
[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]

# FLATTEN THE MATRIX
flatten = []
for row in matrix:
    for i in range(3):
        flatten.append(row[i])

[row[i] for row in matrix for i in range(3)]
[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]

# equivalent to
from itertools import chain
list(chain(*matrix))
list(chain.from_iterable(matrix))


# TRANSPOSE THE MATRIX
[[row[i] for row in matrix] for i in range(3)]
[[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]]

# almost equivalent to
zip(*matrix)
[(1, 1, 1, 1), (2, 2, 2, 2), (3, 3, 3, 3)]