Я встречаю странную ошибку в Leetcode 867. Транспонировать матрицу.
Вопрос состоит в том,
Если задана матрица A, вернуть транспонирование A.
Транспонирование матрицы - это матрица, перевернутая по ее главной диагонали, с переключением строки истолбцы индексов матрицы.
Пример 1:
Вход: [[1,2,3], [4,5,6], [7,8,9]] Выход: [[1,4,7], [2,5,8], [3,6,9]] Пример 2:
Ввод: [[1,2,3], [4,5,6]] Выход: [[1,4], [2,5], [3,6]]
Код дает право:
`res = [[None] * len(A) for _ in range(len(A[0]))]
#res = [[None] * len(A)] * len(A[0]) # why this doesn't work
for r, row in enumerate(A):
for c, val in enumerate(row):
res[c][r] = val
return res`
Мое решение -
`res = [[None] * len(A)] * len(A[0]) # why this doesn't work
for r, row in enumerate(A):
for c, val in enumerate(row):
res[c][r] = val
return res`
, который дает вход и выход как Ваш вход [[1,2,3], [4,5,6]] Выход [[3,6], [3,6], [3,6]] Ожидаемый[[1,4], [2,5], [3,6]]
** Единственная разница между моим решением и правильным ответом - **
`res = [[None] * len(A) for _ in range(len(A[0]))]
res = [[None] * len(A)] * len(A[0]) # why this doesn't work`
** Почему вторая строка не работает?**
[[None] * len(A) for _ in range(len(A[0]))] == [[None] * len(A)] * len(A[0])
возврат True