Transposing nested generator

Viewed 34

I am trying to create the analogous operation of transposing a list of lists.

Here is the function using standard list comprehension:

matrix = [[(i, j) for j in range(3)] for i in range(3)]
for row in zip(*matrix):
    print(list(row))
#
[(0, 0), (1, 0), (2, 0)]
[(0, 1), (1, 1), (2, 1)]
[(0, 2), (1, 2), (2, 2)]
#

While the analogous expression, using generator expressions

generators = (((i, j) for j in range(3)) for i in range(3))
for generator in zip(*generators):
    print(list(generator))
#
[(2, 0), (2, 0), (2, 0)]
[(2, 1), (2, 1), (2, 1)]
[(2, 2), (2, 2), (2, 2)]
#

Just copies the last generator repeatedly.

As an intermediate step, this yields a proper transpose

generators = ([(i, j) for j in range(3)] for i in range(3))
0 Answers
Related