Ошибка при транспонировании матрицы
matrix = [[1, 4, 6],
[6, 0, 8],
[2, 9, 4]]
for i in range(0, len(matrix)):
for j in range(0, len(matrix[i])):
tmp = matrix[i][j]
matrix[i][j] = matrix[j][i]
matrix[j][i] = tmp
print(matrix)
Ответы (1 шт):
Автор решения: Andy Pavlov
→ Ссылка
Проблема, что таким циклом Вы крутите сначала в одну сторону матрицу относительно диагонали, а потом обратно, когда доходите до нижнего треугольника.
Нужно транспонировать относительно диагонали. Второй цикл берем со стартом от номера элемента диагонали. Еще в if можно диагональ обернуть, чтобы ее саму на себя не менять.
matrix = [[1, 4, 6],
[6, 0, 8],
[2, 9, 4]]
for i in range(0, len(matrix)):
for j in range(i, len(matrix[i])):
if i != j:
tmp = matrix[i][j]
matrix[i][j] = matrix[j][i]
matrix[j][i] = tmp
print(matrix)
Но проще это все сделать так, хотя по скорости верхний может и выиграть.
mt = list(zip(*matrix))