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))