Задать вопрос
@PACTAnew18

Как из списка списков получить такой результат?

из такого списка:
list = [['1', '2', '3'],['4', '5', '6'],['7', '8', '9', ]]

как получить такой результат
1 4 7
2 5 8
3 6 9
  • Вопрос задан
  • 282 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 5
OrlovEvgenii
@OrlovEvgenii
golang developer / DevOps
Чтобы получить транспонированную матрицу из списка списков, необходимо использовать функцию zip() в сочетании с оператором * для распаковки списков. Вот как это можно сделать:

lst = [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
result = [list(x) for x in zip(*lst)]


В результате вы получите список списков, где каждый вложенный список представляет собой строку транспонированной матрицы.

Чтобы вывести элементы этой матрицы в виде таблицы, можно использовать циклы, например так:
for row in result:
    print(' '.join(row))


Этот код выведет элементы матрицы в виде таблицы, где каждая строка будет расположена в новой строке, а элементы будут разделены пробелами.
Ответ написан
Комментировать
Как вариант
list_of_lists = [['1', '2', '3'],['4', '5', '6'],['7', '8', '9']]

# обход элементов каждого вложенного списка и сохранение их в новый список
new_list = []
for i in range(len(list_of_lists[0])):
    for lst in list_of_lists:
        new_list.append(lst[i])

# транспонирование списка списков
transposed_list = list(zip(*list_of_lists))

# преобразование каждого кортежа в строку и объединение элементов с помощью пробела
result = '\n'.join([' '.join(t) for t in transposed_list])

print(result)
Ответ написан
Комментировать
@Elbro
lst = [['1', '2', '3'],['4', '5', '6'],['7', '8', '9']]

new_lst = []
for i in range(len(lst[0])):
    temp = []
    for j in range(len(lst)):
        temp.append(lst[j][i])
    new_lst.append(temp)

for row in new_lst:
    print(' '.join(row))
Ответ написан
Комментировать
@IraDzyuba
Нужно поменять местами все элементы матрицы, кроме главной диагонали. То есть, нужно создать цикл, который повторяется столько раз, сколько элементов находится по одну сторону от главной диагонали (не включая ее).

Вот мой вариант:
lst = [['1', '2', '3'],['4', '5', '6'],['7', '8', '9']]

for i in range(len(lst)):
    for j in range(i):
        lst[i][j], lst[j][i] = lst[j][i], lst[i][j]

for row in lst:
    print(*row)
Ответ написан
Комментировать
@Clarsik
print(list[1][1])
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы