Как легко выровнять список в Питоне?
Как сделать список плоским в Python
Иногда при работе с данными у вас может быть список из вложенных списков. Одна из общих операций - сделать плоским этот список в одномерный список в Python. Сделать список плоским означает преобразовать многомерный список, такой как матрица, в одномерный список.
Чтобы лучше проиллюстрировать, что значит сделать список плоским, предположим, у вас есть следующая матрица числовых значений:
Python
Переменная matrix
содержит список в Python, который содержит четыре вложенных списка. Каждый вложенный список представляет собой строку в матрице. Строки содержат по четыре элемента или числа. Теперь предположим, что вы хотите преобразовать эту матрицу в следующий список:
Python
Каким образом можно сделать список плоским и получить одномерный список, как показано выше? В этом руководстве вы узнаете, как сделать это в Python.
Как сделать список из списков плоским с помощью for
Loop
Как можно сделать список из списков плоским в Python? В общем случае, чтобы сделать список из списков плоским, вы можете выполнить следующие шаги явно или неявно:
- Создать новый пустой список для хранения плоских данных.
- Итерироваться по каждому вложенному списку или подсписку в исходном списке.
- Добавить каждый элемент из текущего подсписка в список плоских данных.
- Вернуть полученный список с плоскими данными.
Чтобы продолжить с примером matrix
, вот как вы бы перевели эти шаги в Python-код, используя цикл for
и метод .extend()
:
Python
Внутри flatten_extend()
вы сначала создаете новый пустой список с именем flat_list
. Вы будете использовать этот список для хранения плоских данных, когда вы извлекаете их из matrix
. Затем вы запускаете цикл для итерации по внутренним спискам из matrix
. В этом примере вы используете имя row
, чтобы представить текущий вложенный список.
На каждой итерации вы используете .extend()
, чтобы добавить содержимое текущего подсписка в flat_list
. Этот метод принимает итерируемый объект в качестве аргумента и добавляет его элементы в конец целевого списка.
Теперь запустите следующий код, чтобы проверить, что ваша функция выполняет свою работу:
Этот код вызывает функцию flatten_extend()
с matrix
в качестве аргумента и сохраняет результат в переменной flattened
. Затем он печатает результат, который должен быть плоским списком, как показано выше.
![How to Flatten a List of Lists in Lists_Watermarked.2f9407737589.jpg)
Использование компрехеншена для преобразования списка из списков плоским
Кроме цикла for
и метода .extend()
, вы также можете использовать компрехеншен для создания плоского списка. Компрехеншен - это краткий способ создать новый список на основе существующего списка по определенным правилам.
В случае списка из списков можно использовать компрехеншен для перебора внешнего списка и всех его внутренних списков. Вы можете использовать вложенный компрехеншен, чтобы перебрать элементы внутренних списков и добавить их в новый плоский список.
Вот как выглядит компрехеншен для создания плоского списка из matrix
:
Сначала вы определяете функцию flatten_comprehension()
, которая принимает matrix
в качестве аргумента. Затем вы возвращаете новый список, созданный с помощью компрехеншена.
Компрехеншен начинается с двух вложенных циклов: первый цикл перебирает внешний список (matrix
), а второй цикл перебирает внутренние списки (sublist
). Для каждого элемента внутреннего списка вы добавляете его в новый плоский список.
Проверьте следующий код, чтобы убедиться, что ваша функция работает правильно:
Как и раньше, этот код вызывает функцию flatten_comprehension()
с matrix
в качестве аргумента и печатает результат, который должен быть плоским списком.
Преобразование списка с использованием стандартных и встроенных инструментов
Помимо цикла for
и компрехеншена, в Python также есть несколько стандартных и встроенных инструментов, которые можно использовать для преобразования списка из списков плоским.
Объединение итерируемых объектов с помощью itertools.chain()
Модуль itertools
в Python предоставляет полезные инструменты для работы с итераторами и итерируемыми объектами. Один из таких инструментов - chain()
, который может совмещать несколько итерируемых объектов в один.
Чтобы преобразовать список из списков в плоский список с помощью chain()
, вам нужно сначала импортировать его из модуля itertools
. Затем вы можете передать исходный список в chain()
в качестве аргумента, чтобы объединить все его внутренние списки в один.
Пример применения chain()
для преобразования matrix
в плоский список:
В этом примере вы определяете функцию flatten_chain()
и импортируете chain
из itertools
. Затем вы вызываете chain(*matrix)
, чтобы объединить все внутренние списки из matrix
в один итерируемый объект. Наконец, вы используете list()
для преобразования итерируемого объекта в плоский список.
Проверьте следующий код, чтобы убедиться, что ваша функция работает правильно:
Код вызывает функцию flatten_chain()
с matrix
в качестве аргумента и печатает результат, который должен быть плоским списком.
Конкатенация списков с использованием functools.reduce()
Модуль functools
в Python предоставляет функции высшего порядка, которые можно использовать для работы с функциями. Один из таких инструментов - reduce()
, который позволяет применять функцию и последовательно объединять элементы последовательности.
Чтобы преобразовать список из списков в плоский список с помощью reduce()
, вам нужно сначала импортировать его из модуля functools
. Затем вы можете передать исходный список и функцию объединения в reduce()
, чтобы последовательно объединять внутренние списки в один.
Пример применения reduce()
для преобразования matrix
в плоский список:
В этом примере вы определяете функцию flatten_reduce()
и импортируете reduce
из functools
. Затем вы вызываете reduce()
с лямбда-функцией, которая принимает два аргумента и выполняет конкатенацию. Функция reduce()
последовательно объединяет внутренние списки из matrix
, используя переданную лямбда-функцию.
Проверьте следующий код, чтобы убедиться, что ваша функция работает правильно:
Код вызывает функцию flatten_reduce()
с matrix
в качестве аргумента и печатает результат, который должен быть плоским списком.
Использование sum()
для объединения списков
Функция sum()
в Python обычно используется для вычисления суммы чисел. Однако, если передать список списков в sum()
, она будет выполнять объединение вместо сложения.
Чтобы преобразовать список из списков в плоский список с помощью sum()
, вы просто передаете его в sum()
в качестве аргумента. Эта функция сложит все внутренние списки из matrix
в один список.
Пример использования sum()
для преобразования matrix
в плоский список:
В этом примере вы определяете функцию flatten_sum()
. Внутри функции вы вызываете sum()
с matrix
в качестве аргумента и пустым списком []
в качестве начального значения. При использовании пустого списка в качестве начального значения sum()
будет выполнять объединение списков в плоский список.
Проверьте следующий код, чтобы убедиться, что ваша функция работает правильно:
Код вызывает функцию flatten_sum()
с matrix
в качестве аргумента и печатает результат, который должен быть плоским списком.
Рассмотрение производительности при преобразовании ваших списков
При преобразовании списка из списков в плоский список важно учитывать производительность. Каждый из представленных выше подходов имеет свои особенности и может иметь различное время выполнения в зависимости от размера и сложности исходного списка.
Обычно itertools.chain()
является наиболее эффективным вариантом, так как он не создает новый список и выполняет объединение на лету. Однако, для маленьких списков разница в производительности может быть незначительной.
Если вам нужно преобразовать большие списки или работать с высокоэффективными алгоритмами, то itertools.chain()
может быть предпочтительным выбором.
Преобразование списков в Python для анализа данных с помощью NumPy
NumPy - это библиотека Python для работы с массивами и матрицами. Она обеспечивает высокую производительность и может быть очень полезна при работе с данными.
Чтобы преобразовать список из списков в плоский список для анализа данных с помощью NumPy, вы можете использовать функцию numpy.flatten()
. Эта функция преобразует многомерные массивы в одномерные.
Вот пример использования numpy.flatten()
для преобразования matrix
в плоский список:
В этом примере вы импортируете NumPy, определяете функцию flatten_numpy()
и вызываете np.array(matrix).flatten().tolist()
. Сначала вы преобразуете matrix
в массив NumPy с помощью np.array()
, затем используете .flatten()
, чтобы сделать его одномерным, и, наконец, преобразуете его обратно в плоский список с помощью .tolist()
.
Проверьте следующий код, чтобы убедиться, что ваша функция работает правильно:
Код вызывает функцию flatten_numpy()
с matrix
в качестве аргумента и печатает результат, который должен быть плоским списком.
Заключение
В этой статье вы узнали несколько способов сделать список из списков плоским в Python. Вы использовали цикл for
, компрехеншен, стандартные инструменты и библиотеку NumPy для преобразования ваших списков.
Каждый из этих способов имеет свои преимущества и недостатки, поэтому выбор наиболее подходящего способа зависит от ваших потребностей и требований производительности.
Теперь, когда вы знаете, как сделать список плоским в Python, вы можете применить эти знания в своих проектах и работе с данными.