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

Как упростить сглаживание списков в 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],
]
flat_matrix = flatten_extend(matrix)
print(flat_matrix)

Вывод будет следующим:

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

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