Пропустить до содержимого

Как использовать Python для упрощения вложенных списков

CodeMDD.io

Как сделать одномерный список из списка списков в Python

Иногда, когда вы работаете с данными, у вас может быть список вложенных списков. Обычная операция заключается в сплошном раскрытии этих данных в одномерный список в Python. Разворачивание списка включает преобразование многомерного списка, такого как матрица, в одномерный список.

Для лучшего иллюстрирования того, что означает развернуть список, предположим, что у вас есть следующая матрица числовых значений:

Python

>>> matrix = [
... [9, 3, 8, 3],
... [4, 5, 2, 8],
... [6, 4, 3, 1],
... [1, 0, 4, 5],
... ]

Переменная matrix содержит список в Python, содержащий четыре вложенных списка. Каждый вложенный список представляет собой строку в матрице. В строках хранятся четыре элемента или числа каждый. Теперь предположим, что вы хотите преобразовать эту матрицу в следующий список:

Python

[9, 3, 8, 3, 4, 5, 2, 8, 6, 4, 3, 1, 1, 0, 4, 5]

Как вы можете развернуть свою матрицу и получить одномерный список, подобный указанному выше? В этом руководстве вы узнаете, как это сделать на Python.

Как развернуть список списков с помощью цикла for

Каким образом вы можете развернуть список списков на Python? В целом, чтобы раскрыть список списков, вы можете выполнить следующие шаги явно или неявно:

  1. Создайте новый пустой список для хранения раскрытых данных.
  2. Определите каждый вложенный список или подсписок в исходном списке.
  3. Добавьте каждый элемент текущего подсписка в список раскрытых данных.
  4. Верните итоговый список с раскрытыми данными.

Чтобы продолжить с примером matrix, вот как вы бы перевели эти шаги в код Python с использованием цикла for и метода .extend():

Python

def flatten_extend(matrix):
flat_list = []
for row in matrix:
flat_list.extend(row)
return flat_list

Внутри flatten_extend() вы сначала создаете новый пустой список под названием flat_list. Вы будете использовать этот список для хранения раскрытых данных, когда вы извлечете их из matrix. Затем вы начинаете цикл для перебора внутренних или вложенных списков из matrix. В этом примере вы используете имя row, чтобы представить текущий вложенный список.

На каждой итерации вы используете .extend() для добавления содержимого текущего подсписка в flat_list. Этот метод принимает в качестве аргумента итерируемый объект и добавляет его элементы в конец целевого списка.

Теперь запустите следующий код, чтобы проверить, что ваша функция выполняет свою работу:

matrix = [
[9, 3, 8, 3],
[4, 5, 2, 8],
[6, 4, 3, 1],
[1, 0, 4, 5],
]
result = flatten_extend(matrix)
print(result)

Вы должны получить следующий результат:

[9, 3, 8, 3, 4, 5, 2, 8, 6, 4, 3, 1, 1, 0, 4, 5]

Этот результат является ожидаемым выводом функции flatten_extend(). Внутри нее вы разворачиваете список списков matrix в одномерный список flat_list с использованием цикла for и метода .extend().

Теперь вы знаете, как разворачивать список списков в Python с помощью цикла for и метода .extend(). Это легко читаемый и понятный способ выполнять эту операцию. Кроме того, вы можете видеть, что ваша функция flatten_extend() работает должным образом, возвращая исходный список, который был преобразован в одномерный список.

В следующих разделах этого руководства вы узнаете и другие способы разворачивания списка списков в Python.