Рубрики
Без рубрики

25 Способов Сгладить список в Python С примерами

Эта статья содержит наиболее важные 25 способов сглаживания списка в python, которые вам необходимо знать для преобразования вложенных списков.

Автор оригинала: Team Python Pool.

25 Способов Сгладить список в Python С примерами

Здравствуйте программисты, в сегодняшней статье мы будем обсуждать различные способы сгладить список в python. Мы узнаем о 25 различных способах сглаживания многомерных или вложенных списков в одномерные. Из всех способов, которые мы будем проходить, вы можете выбрать тот, который вам больше всего нравится – легкий и необходимый для вашей программы.

Прежде чем мы начнем с различных способов сглаживания списков в python, позвольте мне просто кратко рассказать вам о том, что такое list и что мы подразумеваем под сглаживанием списка.

Список – Список в Python – это сбор любого количества различных элементов в порядке и изменчивости. Список создается путем помещения всех его элементов в квадратные скобки[], разделенные запятой. Элементы могут иметь разные типы данных, то есть список может содержать целочисленные, плавающие и строковые элементы вместе. Список, содержащий в качестве элементов другой список, называется вложенным списком.

Простой список в Python:-

X = [1, 3, 5]

Вложенный список:

Y = [[1,2,3], [4, 5, 6], [7, 8, 9]]

Сглаживание списка в python – Сглаживание списков в python означает преобразование многомерных списков в одномерные списки. Это в основном метод объединения всех подсписков вложенного списка в один единый список. Например, уплощенный список вложенного списка Y = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] задается как Y = [1, 2, 3, 4, 5, 6, 7, 8, 9]

В этом уроке мы подробно обсудим 25 различных способов сглаживания списка в python:

  1. Неглубокое уплощение
  2. Понимание списка
  3. Глубокое уплощение
  4. Метод рекурсии
  5. Без рекурсии
  6. С помощью Itertools
  7. Использование функции Reduce
  8. NumPy Ravel
  9. Использование NumPy Flatten
  10. NumPy Reshape
  11. Использование NumPy flat
  12. NumPy concatenate
  13. Лямбда-функция
  14. Однострочная команда
  15. <сильный>15. Функция суммы
  16. Functools Reduce + Operator.concat
  17. Использование Django Flatten
  18. By using Pandas Flatten
  19. Использование Matplotlib Flatten
  20. Использование Unipath Flatten
  21. ByuИспользование Setuptools Flatten
  22. Использование NLTK Flatten
  23. Использование генератора
  24. Сгладить словарь в список

1. Сгладить список в Python С помощью Неглубокого сглаживания:

Пример:

A = [[0,1],[2,3]]

flatten_list = []

for subl in l:

    for item in subl:

        flatten_list.append(item)

print(flatten_list)

Выход:

[0, 1, 2, 3]

Объяснение:

Этот простой пример выравнивает список списков путем преобразования [[0, 1], [2, 3]] в [0, 1, 2, 3]. Метод, описанный в приведенном выше примере сглаживания списка, называется неглубоким сглаживанием. Он используется только со списком списков, имеющих одинаковую глубину.

2. Сгладить список в Python С помощью Понимания списка:

Пример:

A = [[0,1], [2,3]]

flatten_list = [item for subl in l for item in subl]

print(flatten_list)

Выход:

[0, 1, 2, 3]

Объяснение:

Использование понимания списка – это метод сглаживания списков в одной строке кода. Если мы сломаем код, он в основном состоит из вложенного цикла for. Первый цикл-это “для субмарины в l”, а второй – “для субмарины в l”.

3. Сгладить список в Python С помощью Глубокого сглаживания:

Пример:

from iteration_utilities import deepflatten

multi_depth_list = [[0,1], [[5]], [6,4]]
(deepflatten(multi_depth_list))

print(flatten_list)

Выход:

[0, 1, 5, 6, 4]

Объяснение:

Метод глубокого выравнивания обеспечивает выравнивание списка списков, имеющих различную глубину. Если бы для приведенного выше примера было использовано неглубокое уплощение, то это дало бы результат [0, 1, [5], 6, 4]. Это не наш желаемый результат, поэтому используется метод глубокого сплющивания, который преодолевает недостаток метода мелкого сплющивания. В библиотеке iteration_utilities есть встроенная функция deepflatten (), позволяющая реализовать этот метод для выравнивания списка. Однако для реализации этой функции deepflatten() в вашей программе вам необходимо установить пакет iteration_utilities из pip, поскольку он по умолчанию недоступен в python.

4. Сгладить список в Python С помощью метода рекурсии:

Пример:

def flatten(l1) 
if len(l1):

  if type(l1[0]):
 (l1[0])

 else:

#recursive case

elif type(l1[0]):(l1[0]) + flatten(l1[1:])
else:
result = (l1[0]) + flatten(l1[1:])
return result
list1 = [[0,1], [[5]], [6, 7]]
flatten(list1)

Выход:

[0, 1, 5, 6, 7]

Объяснение:

Здесь мы используем метод рекурсии, чтобы сгладить список. В этом примере мы вызываем функцию рекурсивно внутри себя, чтобы она работала до конца. Базовый случай в приведенном выше примере проверяет, равна ли длина 1. Если это правда, то он затем проверяет, является ли тип первого индекса списка списком. Только если это правда, он вызывает функцию для выравнивания списка или сохраняет его как обычное число.

5. Сгладить список в Python с помощью Без рекурсии:

Пример:

def flatten_without_rec(non_flat):
    
    flat = []
    
    while non_flat: #runs until the given list is empty.
        
           .pop()
            
            if type(e): #checks the type of the poped item.
                
                    non_flat.extend(e) #if list extend the item to given list.
            else:
                
                    flat.append(e) #if not list then add it to the flat list.
            
    flat.sort()
    
    return flat
l= [[0, 1], [[5]], [6, 7]]
flatten_without_rec(l)

Выход:

[0, 1, 5, 6, 7]

Объяснение:

Чтобы сгладить без рекурсии, мы определяем функцию flatten_without_rec(). Эта функция запускает цикл while до тех пор, пока все элементы не будут выскочены из вложенного списка переменной глубины. The href=”https://en.wikiversity.org/wiki/Control_structures#:~:text=A%20control%20structure%20is%20like,computing%3B%20It%20is%20a%20prediction.”>control входит в цикл while до тех пор, пока данный список не станет emp. Как только он попадает в цикл, он проверяет тип элемента, выскочившего из списка. Если элемент является списком, то цикл снова должен быть запущен над ним. Если нет, то он добавляется в плоский список. href=”https://en.wikiversity.org/wiki/Control_structures#:~:text=A%20control%20structure%20is%20like,computing%3B%20It%20is%20a%20prediction.”>control входит в цикл while до тех пор, пока данный список не станет emp. Как только он попадает в цикл, он проверяет тип элемента, выскочившего из списка. Если элемент является списком, то цикл снова должен быть запущен над ним. Если нет, то он добавляется в плоский список.

6. Сгладить список в Python С помощью Itertools:

Пример:

import itertools

List_1 = [[1,2,3],[4,5,6],[7,8,9]] #List to be flattened
(itertools.chain(*List_1))

print(List_flat)

Выход:

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

Объяснение:

Импорт itertools в вашу программу python дает вам доступ к ее встроенной функции itertools.chain(), которая объединяет различные списки вложенного списка в единый список. 2-D список, подлежащий выравниванию, передается в качестве аргумента функции itertools.chain ().

7. Сгладить список в Python С помощью функции Reduce:

Пример:

from functools import reduce

multi_depth_list = [[3,2,1],[1,4,5]]

reduce(list.__add__, (list(items) for items in multi_depth_list

Выход:

[3,2,1,1,4,5]

Объяснение:

Это очень простой способ сглаживания списков с помощью функции reduce(). Эта функция является встроенной функцией библиотеки functools. Вам просто нужно будет импортировать сокращение из функциональных инструментов.

8. Сгладить список в Python С помощью NumPy Ravel:

Библиотека NumPy имеет три встроенные функции, которые могут преобразовывать вложенные списки и многомерные массивы в плоские списки. Эти три функции: numpy.ravel(), numpy.flatten(), numpy.reshape(-1).

numpy.ravel()

import numpy as np
.array([[3,2,1], [4,5,6], [7,8,9]]).ravel()
print(out)

Выход:

[3,2,1,1,4,5]

9. Сгладить список в Python С помощью NumPy Flatten:

Пример:

import numpy as np
.array([[3,2,1], [4,5,6], [7,8,9]]).flatten()
print(out)

Выход:

[3,2,1,1,4,5]

Объяснение:

Массив Numpy имеет метод flatten (), который позволяет ему уменьшить размеры массива до 1. С оптимизированными алгоритмами и улучшенной функциональностью этот метод является одним из самых быстрых методов сглаживания списка. Обратите внимание, что метод flatten() не изменяет содержимое существующего массива. Вместо этого он возвращает новый плоский массив.

10. Сгладить список в Python С помощью NumPy Reshape:

Пример:

import numpy as np
.array([[3,2,1], [4,5,6], [7,8,9]])
.reshape(-1)

print(out)

Здесь вывод будет одинаковым, потому что все три функции используются для выравнивания списка в python.

Выход:

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

Объяснение:

Пакет NumPy по умолчанию отсутствует в python. Чтобы использовать эти встроенные функции выравнивания этого пакета, вам придется установить его из pip. Все три функции выполняют выравнивание списков и возвращают один и тот же результат. Разница заключается только в их временной сложности, то есть в скорости. Функция flatten возвращает копию каждый раз, когда она выравнивает массив. Следовательно, он занимает больше времени, когда имеет дело с большим набором значений.

11. Сгладить список в Python с помощью NumPy flat:

Пример:

import numpy as np
.array([[3,2,1], [4,5,6], [7,8,9]])

print(list(lst.flat))

Выход:

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

Объяснение:

Массив numpy имеет плоский атрибут, который возвращает сплющенный объект n-мерного массива. Этот атрибут используется для перебора всех элементов в 1D измененном массиве.

12. Сгладить список в Python С помощью NumPy concatenate:

Пример:

import numpy as np
.array([[3,2,1], [4,5,6], [7,8,9]])

print(list(numpy.concatenate(lst)))

Выход:

[3,2,1,1,4,5]

Объяснение:

Numpy concatenate – это функция python, которая добавляет все подмассивы массива. С помощью этого метода вы можете только сгладить 2d-список в python. Конкатенация – это замена оператора extend() или+.

13. Сгладить список в Python с помощью лямбда-функции:

Лямбда-функции-это самый простой способ объявления функций в одной строке. Имея возможность принимать и возвращать параметр, вы можете выполнять в нем различные операции. Сглаживание массива также возможно с помощью понимания списка и лямбда-функций.

Пример:

Выход:

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

Объяснение:

Встроенная лямбда-команда в Python помогает создавать короткие функции в одной строке. Объединив это с пониманием списка, вы можете откормить массив, как показано в приведенных выше примерах. Во-первых, мы начнем с создания лямбда-функции под названием flatten. Эта функция использует понимание вложенного списка для создания нового массива с каждым элементом. Затем мы вызвали flatten array, передав 2d-массив. Функция возвращает сплющенный массив, который можно увидеть на выходе.

14. Сгладить список в Python с помощью одной строчной команды

И последнее, но не менее важное: существует однострочный трюк, который вы можете использовать для выравнивания массива в python. С введением методов понимания списка вы можете инициализировать массив в одной строке, используя циклы for. Поскольку у нас есть 2-d массив, мы будем использовать 2 для циклов внутри одной строки в понимании списка. Давайте перейдем к коду –

Пример:

print([i for row in [[3,2,1], [4,5,6], [7,8,9]] for i in row])

Выход:

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

Объяснение:

Код начинается с инициализации списка с помощью оператора for in […]. За этим оператором следует оператор ‘i in row’, который позволяет нам захватить каждый отдельный элемент из вложенного массива.

15. Функция суммы

Пример:

l = [[1, 2, 3], [4, 5], [6]](l, [])
print(l)

Выход:

[1,2,3,4,5,6]

Объяснение:

Функция sum по умолчанию имеет второй параметр в качестве оператора цепочки. Обходя [] в качестве параметра, вы гарантируете, что возвращаемый тип данных относится к списку. Этот метод используется многими программистами для выравнивания списка в python.

16. Functools Reduce + Operator.concat

Пример:

import functools
import operator

def functools_reduce(a):
    return functools.reduce(operator.concat, a)
l = [[1, 2, 3], [4, 5], [6]]
print(functools_reduce(l))

Выход:

[1,2,3,4,5,6]

Объяснение:

Функция functools reduce принимает оператор конкатенации и список. Он применяет оператор конкатенации между всеми элементами списка и возвращает сплющенный массив.

17. Functools Reduce + Operator.concat

Пример:

import functools
import operator

def functools_reduce(a):
    return functools.reduce(operator.iconcat, a)
l = [[1, 2, 3], [4, 5], [6]]
print(functools_reduce(l))

Выход:

[1,2,3,4,5,6]

Объяснение:

Функция Concat относится к алгоритму in-place. Эта операторная функция заменяет предыдущее значение итерации новым значением. Функция functools reduce принимает этот оператор и список. Он применяет оператор конкатенации между всеми элементами списка и возвращает сплющенный массив.

18. Использование Django Flatten

Пример:

from django.contrib.admin.utils import flatten
l = [[1,2,3], [4,5], [6]]
print(flatten(l))

Выход:

[1,2,3,4,5,6]

Объяснение:

Функция Flatten от django.contrib.admin.utils позволяет легко сгладить массив. Этот метод предварительно включен в библиотеку Django. Если у вас не установлен Django, запустите “pip install django” в вашем терминале.

19. Использование Панд для Сплющивания

Пример:

from pandas.core.common import flatten
l = [[1,2,3], [4,5], [6]]
print(list(flatten(l)))

Выход:

[1,2,3,4,5,6]

Объяснение:

Функция Flatten от pandas.core.common позволяет легко сгладить массив. Этот метод предварительно включен в библиотеку Pandas. Если у вас не установлены панды, запустите “pip install pandas” в вашем терминале.

20. Использование Matplotlib Flatten

Пример:

from matplotlib.cbook import flatten
l = [[1,2,3], [4,5], [6]]
print(list(flatten(l)))

Выход:

[1,2,3,4,5,6]

Объяснение:

Функция Flatten из matplotlib.cbook позволяет легко сгладить массив. Этот метод предварительно включен в библиотеку Matplotlib. Если у вас не установлен Matplotlib, запустите “pip install matplotlib” в вашем терминале.

21. Использование Unipath Flatten

Пример:

from unipath.path import flatten
l = [[1,2,3], [4,5], [6]]
print(list(flatten(l)))

Выход:

[1,2,3,4,5,6]

Объяснение:

Функция Flatten из unipath.path позволяет легко сгладить массив. Этот метод предварительно включен в библиотеку Unipath. Если у вас не установлен Unipath, запустите “pip install unipath” в вашем терминале.

22. Использование Setuptools Flatten

Пример:

from setuptools.namespaces import flatten
l = [[1,2,3], [4,5], [6]]
print(list(flatten(l)))

Выход:

[1,2,3,4,5,6]

Объяснение:

Функция Flatten из setuptools.namespaces позволяет легко сгладить массив. Этот метод предварительно включен в библиотеку setuptools. Эта библиотека доступна в вашей установке python по умолчанию.

23. Использование NLTK Flatten

Пример:

from nltk import flatten

l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
print(flatten(l))

Выход:

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

Объяснение:

Функция Flatten от nltk позволяет легко сгладить массив. Этот метод предварительно включен в библиотеку NLTK. Если у вас не установлен NLTK, запустите “pip install nltk” в вашем терминале.

24. Использование генератора

Пример:

def flatten(items):
    """Yield items from any nested iterable; see REF."""
    for x in items:
        if isinstance(x, list) and not isinstance(x, (str, bytes)):
            yield from flatten(x)
        else:
            yield x

l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
print(list(flatten(l)))

Выход:

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

Объяснение:

Генераторы-это особый тип функции, которая шаг за шагом выводит значения из функции. Главное преимущество этих функций заключается в том, что их можно вызывать всякий раз, когда вам требуется новое значение. Таким образом, потребление памяти уменьшается. Сначала мы начнем с определения функции flatten(). Эта функция проверяет, является ли параметр итеративным, а затем выравнивает его. Таким образом, вы можете сгенерировать весь сплющенный массив.

25. Расплющите словарь в список

Пример:

d = {'python': 0, 'pool': 1}
l = []
for k in d:
    l.append(k)
    l.append(d[k])
print(l)

Выход:

['python', 0, 'pool', 1]

Объяснение:

Вы можете сгладить словарь в массив с помощью простого цикла “for”. Кроме того, вы также можете настроить последовательность списков в соответствии с вашими потребностями.

Должен Читать

  • Введение в Python Super С примерами
  • Функция Справки Python
  • Почему Python sys.exit лучше других функций выхода?
  • Python Bitstring: Классы и другие примеры | Модуль

Вывод

Существует несколько способов сгладить список в python. Лучший способ сгладить список зависит от потребностей вашей программы и используемых библиотек. Многомерные массивы и вложенные списки, имеющие различные размеры и глубину, также сглаживаются. Вы можете использовать любой из вышеперечисленных методов для выравнивания

Все еще есть какие – либо сомнения или вопросы, дайте мне знать в комментарии

Счастливого Пифонирования!