When a matrix is transposed, its rows and columns are switched like this:
The list comprehension to do this looks like this:
def transpose_matrix(matrix):
return [[row[col] for row in matrix] for col, _ in enumerate(matrix[0])]
The matrix should have a rectangular form. All rows should be of equal size and all columns should be of equal size.
Here is a test program that uses the transpose function:
matrix = [
[1, 2, 3],
[4, 5, 6]
]
def print_matrix(matrix):
for row in matrix:
print(" ".join([str(col) for col in row]))
print()
def transpose_matrix(matrix):
return [[row[col] for row in matrix] for col, _ in enumerate(matrix[0])]
print_matrix(matrix)
transposed_matrix = transpose_matrix(matrix)
print_matrix(transposed_matrix)
transposed_again_matrix = transpose_matrix(transposed_matrix)
print_matrix(transposed_again_matrix)
Output:
1 2 3 4 5 6 1 4 2 5 3 6 1 2 3 4 5 6