TransWikia.com

Transpose of a matrix using Python 3.8

Code Review Asked on February 25, 2021

What is the transpose of a matrix:

In linear algebra, the transpose of a matrix is an operator which flips a matrix over its diagonal; that is, it switches the row and column indices of the matrix A by producing another matrix, often denoted by Aᵀ.

Code

dimension = int(input())
matrix = []
transpose = []
for row in range(dimension):
    entry = list(map(int,input().split()))
    matrix.append(entry)
for i in range(dimension):
    for j in range(dimension):
        transpose.append(matrix[j][i])
m = 0
n = dimension 

for x in range(dimension+1):
    
    row = transpose[m:n]
    list1 = [str(item) for item in row]
    string2 = " ".join(list1)
    print(string2)
    m = n
    n = n + dimension

My question

What all modifications I can do to this code to make it better furthermore efficient?

2 Answers

You're converting the matrix elements to int and then back to string without doing anything with the ints, so that's just wasteful.

Anyway, the usual way to transpose is zip. Demo including mock input:

input = iter('''3
1 2 3
4 5 6
7 8 9'''.splitlines()).__next__

matrix = [input().split() for _ in range(int(input()))]

for column in zip(*matrix):
    print(*column)

Output:

1 4 7
2 5 8
3 6 9

Answered by superb rain on February 25, 2021

You could do something like this:

dimension = int(input())
matrix = [list(map(int,input().split())) for _ in range(dimension)]
transpose = [[matrix[j][i] for j in range(dimension)] for i in range(dimension)]

PD: This still has to pass by every item on the matrix but it is a little more compact code, and if you're used to python you could find it a little more legible.

Answered by Jorge Morgado on February 25, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP