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 AT.
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?
-
1\$\begingroup\$ Example input and output would be useful. \$\endgroup\$superb rain– superb rain2020年10月05日 22:01:34 +00:00Commented Oct 5, 2020 at 22:01
2 Answers 2
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
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.
-
\$\begingroup\$ Other than code is more compact is there a performance improvement, does the code run faster? \$\endgroup\$2020年10月05日 20:15:35 +00:00Commented Oct 5, 2020 at 20:15
-
\$\begingroup\$ Practically this code does less iterations,
2n^2
wheren
is the dimension (yours do3n^2
) But in terms of algorithmic complexity this is stillO(n^2)
. \$\endgroup\$Jorge Morgado– Jorge Morgado2020年10月05日 20:53:03 +00:00Commented Oct 5, 2020 at 20:53