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

Как легко сделать список списка плоским в Python?

[

Как сделать список списков плоским в Python

Обновлено 26 июня 2023

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

Выборка из данных, плоская конвертация:

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

Хотим получить плоский список:

[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():

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. extend() принимает итерируемый объект в качестве аргумента и добавляет его элементы в конец целевого списка.

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

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

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

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

Поздравляю! Вы успешно плоско преобразовали список списков с помощью цикла for и метода .extend().