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

Как преобразовать вложенные списки в плоский в Python?

[

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

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

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

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

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

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

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

Как сделать список списков плоским с помощью for Loop

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

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

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]

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

Заключение

В этом учебном пособии вы узнали, как сделать список списков плоским в Python. Мы рассмотрели использование цикла for и метода .extend() для достижения этой цели. Вы также получили бесплатный образец кода для дальнейшего изучения и сравнения нескольких способов выполнения этой задачи.

Знание, как сделать список списков плоским, может быть полезным при работе с данными в Python. Теперь вы можете применять эти знания в своих проектах и улучшать свои навыки программирования.