У вас есть return
в течение вашего времени, поэтому функция возвращается после достижения этой точки. Вы должен dedent ваше возвращение на тот же уровень, что и время:
def transpose(matrix):
n = 0
li = []
while n < (len(matrix)):
...
return li
Вы также мог бы заменить время цикла и счетчик n
с для цикла, который перебирает на range(len(matrix))
, так что вы можете спокойно отказаться от n
, а затем перейти инициализация li
вне цикла:
def transpose(matrix):
li = []
for i in range(len(matrix)):
inner_li = []
for sets in matrix:
inner_li.append(sets[i])
li.append(inner_li)
return li
Я предлагаю вам принять популярный рецепт для транспонирования матриц, чтобы сделать код понятнее:
def transpose(matrix):
return list(zip(*matrix))
>>> transpose([[1,2,3],[4,5,6],[7,8,9]])
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
Функция 'return' заканчивается - вы должны использовать' return' после цикла while. – furas
Так как вы его закодировали - вы выполняете инструкции в цикле, а последнее утверждение - 'return'. – MattDMo
В результате я получаю только [1, 4, 7, 2, 5, 8, 3, 6, 9]. –