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

Как легко сплющить список списков в Python?

CodeMDD.io

Как сделать одномерный список из списка списков в 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

Как можно сгладить список списков в 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().

Continue to next part of the article…