Python

Помогите пожалуйста кто-то доделать задачу по пайтон

Сама задача:
Напишите программу, которая переворачивает матрицу(вложенный список n*n) относительно главной диагонали.
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Результат: matrix_2 = [[1, 4, 7],
[2, 5, 8], [3, 6, 9]]

Я начал решать но не знаю как продолжить:
matrix = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
for i in matrix:
for j in range(3):
matrix[i][j]=matrix[j][i]

print(matrix)
>>>
 matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
col = [[matrix[k][i] for k in range(len(matrix))] for i in range(len(matrix[0]))]
for i in col:
print(i)
Олег Мельников
Олег Мельников
5 840
Лучший ответ
Viktor Kukurika Апиридил.
Viktor Kukurika Но у тебя ошибка, которая проявится, если матрица не будет квадратной.
Вот как на Pascal:
Василий Леонов
Василий Леонов
73 229
Это называется транспонированием матрицы:
 def transpose(m):
return [[m[j][i] for j in range(len(m))] for i in range(len(m[0]))]

matrix1 = [list(range(i, i + 3)) for i in range(1, 10, 3)]
matrix2 = transpose(matrix1)

print('Исходная:', *matrix1, 'Транспонированная:', *matrix2, sep = '\n')

А твой код противоречит заданию: нужно получить транспонированную матрицу в новом списке, а ты меняешь исходную.
Viktor Kukurika
Viktor Kukurika
54 053
Леонид Розовский numpy transpose() нет, не наш метод?
 Код для решения данной задачи на языке Python: 

def flip_matrix(matrix):
# определяем размерность матрицы
n = len(matrix)
# итерируем по строкам матрицы
for i in range(n):
# итерируем по столбцам матрицы
for j in range(i, n):
# меняем местами элементы матрицы относительно главной диагонали
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
return matrix

# пример использования
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
matrix_2 = flip_matrix(matrix)
print(matrix_2)
На выходе этот код выдаст следующий результат:

[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Функция flip_matrix(matrix) принимает на вход исходную матрицу в виде вложенного списка. В теле функции определяется размерность матрицы и производится итерация по строкам и столбцам матрицы. В каждой итерации выполняется замена элементов матрицы относительно главной диагонали, после чего измененная матрица возвращается в качестве результата выполнения функции.

Чтобы протестировать работу функции, используется пример матрицы matrix из условия задачи, после чего полученная матрица matrix_2 выводится на экран.
Viktor Kukurika Твоему чату гпт не объяснили, что элементы самой диагонали менять с самими собой не нужно?
Viktor Kukurika Не говоря уже о том, что нужно вернуть новую матрицу, а ты поганишь ту, которая передана в параметре.
Леонид Розовский своих мозгов нет, пользую чужие