def transpose(lst):
transpose_list =[[row[i] for row in lst] for i in range(len(lst[0]))]
return transpose_list
lst = [[4,7,3],[1,8,2],[3,9,3]]
print(transpose(lst))
Вывод:
[[4, 1, 3], [7, 8, 9], [3, 2, 3]]
То же, что и:
tr_lst = []
for i in range(len(lst[0])):
row_elem = []
for row in lst:
row_elem.append(row[i])
tr_lst.append(row_elem)
print(tr_lst)
Алгоритм: Позволяет Возьмите пример:
[[4,7,3],[1,8,2],[3,9,3]]
1)
for row in lst:
1-й Я буду перебирать все строки [4,7,3], [1,8,2], [3,9,3]
(есть три строки)
Тогда я буду возьмите 1-й элемент из каждой строки и добавьте их в list(row_elem)
-> [4,1,3]
, который будет добавлен к tr_list
, затем возьмет 2-й элемент из каждой строки -> [7, 8, 9]
, который также будет добавлен к tr_list, а затем к третьему элементу -> [3, 2, 3]
. Используя for i in range(len(lst[0])):
, я получаю доступ к i-му элементу.
Редактировать:
первая итерация for i in range(len(lst[0])):
row1: [<b>4</b>,7,3]
row2: [<b>1</b>,8,2]
row3: [<b>3</b>,9,3]
Эти <num>
числа будут добавлены в список row_elem
, теперь row_elem
будет иметь [4, 1, 3]
I добавит эти результаты (row_elem
) в tr_list
tr_list
прямо сейчас [<b>[4, 1, 3]</b>]
вторая итерация:
row1: [4,<b>7</b>,3]
row2: [1,<b>8</b>,2]
row3: [3,<b>9</b>,3]
row_elem
будет [7,8,9]
, который будет добавлен к tr_list
tr_list
будет [[4, 1, 3], <b>[7, 8, 9]</b>]
аналогично, для третьей итерации вы это сделаете.
row1: [4,7,<b>3</b>]
row2: [1,8,<b>2</b>]
row3: [3,9,<b>3</b>]
row_elem
будет теперь [3,2,3]
, к которому добавится tr_list
tr_list
будет [[4, 1, 3], [7, 8, 9], <b>[3, 2, 3]</b>]