Для квадратной матрицы подходит третий вариант: [[m[j][i] for j in range(len(m))] for i in range(len(m))]. Для прямоугольной число столбцов нужно брать отдельно.
Какой генератор списков транспонирует (заменяет строки на столбцы) матрицу m?
Для квадратной матрицы подходит третий вариант: [[m[j][i] for j in range(len(m))] for i in range(len(m))]. Для прямоугольной число столбцов нужно брать отдельно.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Какой генератор списков транспонирует (заменяет строки на столбцы) матрицу m?
[m[i][:] for i in range(len(m))]
[[m[i][j] for j in range(len(m))] for i in range(len(m))]
[[m[j][i] for j in range(len(m))] for i in range(len(m))]
[m_[:][i] for i in range(len(m))]
[m[:] for i in range(len(m))]
Ответ
Для квадратной матрицы подходит третий вариант: [[m[j][i] for j in range(len(m))] for i in range(len(m))]. Для прямоугольной число столбцов нужно брать отдельно.
transposed = [[m[row][col] for row in range(len(m))]
for col in range(len(m[0]))] if m else []
Здесь предполагается, что все строки одинаковой длины. Внешний цикл выбирает исходный столбец, внутренний собирает его элементы из всех строк. Копирование строк или повторение m[:] не выполняет транспонирование.