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

Сгладить список списков в Python

Резюме: Уплотнение списка означает преобразование вложенного списка в простой одномерный список. Чтобы сгладить вложенный список, мы можем использовать цикл для цикла или во время лечения или рекурсиона или метод DeepFlatten (). Другие методы включают импорт многочисленных внешних библиотек Python и используя их встроенные функции. https://youtu.be/keflz1qrero Обзор Проблема: Учитывая список … Справить список списков в Python Подробнее »

Автор оригинала: Shubham Sayon.

Резюме: Список списка означает преобразование вложенного списка в простой одномерный список. Чтобы сгладить вложенный список, мы можем использовать для петли или Хотя петля или рекурсия или DeepFlatten () Метод Отказ Другие методы включают в себя импорт многочисленные Внешние библиотеки Python и используя их встроенные функции.

Обзор

Проблема: Учитывая список списков в Python; Как сгладить список?

Теперь некоторые из вас могут думать, что на самом деле значит увлекательный список? 🤔.

Ответ :

Сравнивание Список – это процесс, используемый для преобразования многомерного или вложенного списка (список списков) в одномерный список. Давайте посмотрим на пример, чтобы получить более четкую картину сглаживания списка.

Пример : Рассмотрим данный список, как показано ниже.

[[10,20],[30,40,50]]

После сглаживания списка это выглядит что-то подобное:

[10,20,30,40,50]

❖ Типы списка.

Неглубокое выравнивание это процесс сплюсных списков, которые имеют только глубину одного уровня.

Пример: Рассмотрим список, как указано ниже (он представляет собой список, что одноуровневая глубина)

li = [[100,200],[300,400]]

Снативно (неглубокий) список:

[100,200,300,400,500]

Глубокое выравнивание это процесс сплюсных списков, которые имеют различные глубины.

Пример: Рассмотрим данный список, приведенный ниже (он представляет собой список различных глубин).

l = [ [100,150], [ [200 ] ], [ 300, 400 ] ]

Снативно (глубокий) список:

[100,150,200,300,400]

Теперь, когда мы знаем, что значит уплотнение и его типы, давайте понять, как мы можем сглаживать списки. Без дальнейшей задержки, пусть игры начинаются!

Метод 1: Использование для цикла

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

li = [[10,20],[30,40]]
flat_li = []
for i in li:
  for item in i:
    flat_li.append(item)
print("list before flattening", li)
print ("flattened list: ",flat_li)

Выход:

list before flattening [[10, 20], [30, 40]]
flattened list: [10, 20, 30, 40]

Способ 2: Использование понимания списка

Вышеуказанный метод может быть упакован в одну строку с использованием понимания списка. Это очень лаконичный и эффективный способ выравнивания списков в Python.

◆ Понимание списка является компактным способом создания списков. Простая формула – [Выражение + контекст] Отказ Для более подробного объяснения, пожалуйста, следуйте нашему блогу Учебник здесь Отказ

Следующая программа использует понимание списка для получения однонаправленного решения для сглаживания списков в Python.

li = [[10,20],[30,40]]
print("list before flattening", li)
print ("list after flattening",[item for i in li for item in i])

Выход

list before flattening [[10, 20], [30, 40]]
list after flattening [10, 20, 30, 40]

Метод 3: Использование ITERTOOLS.CHAIN ()

цепь () это метод в Itertools Модуль, который принимает серию повторяемого, а затем возвращает один итеративный. Сгенерированный выход, который является единым истереным, не может быть использован напрямую и должен быть явно преобразован. Этот метод позволяет нам избежать создания дополнительных списков.

Чтобы сгладить список списков, которые мы можем использовать Itertools.Chain () Метод и распаковать данный список, используя * Оператор.

Пример:

import itertools
li = [ [100,150], [ [200 ] ], [ 300, 400 ] ]
print("list before flattening", li)
flat_li = list(itertools.chain(*li))
print("list after flattening", flat_li)

Выход:

list before flattening [[100, 150], [[200]], [300, 400]]
list after flattening [100, 150, [200], 300, 400]

Примечание: Если вы не хотите использовать * Оператор для распаковки списка вы можете использовать iTertools.Chain.from_iterable ()

import itertools
li = [ [100,150], [ [200 ] ], [ 300, 400 ] ]
print("list li before flattening", li)
flat_li = list((itertools.chain.from_iterable(li)))
print("list li after flattening", flat_li)

Выход:

list li before flattening [[100, 150], [[200]], [300, 400]]
list li after flattening [100, 150, 200, 300, 400]

Метод 4: использование Flatten () метода

Мы можем сглаживать списки, используя сплит () Функция Iteration_UTIOLIONTIOLIONTIOLTIONS модуль.

Синтаксис:

iteration_utilities.flatten(iterable)

Пример:

from iteration_utilities import flatten
li = [[100, 150], [[200]], [300, 400]]
print(list(flatten(li)))

Выход:

[100, 150, [200], 300, 400]

Это решает нашу цель только в некоторой степени, потому что Flatten () работает на одном уровне вложенности списка. Однако мы хотим, чтобы решение, которое выглядит что-то подобное: – [100, 150, 200, 300, 400]. Это означает, что нам нужно полное глубокое уплощение данного списка, который приводит нас к глубокому уплощению списков.

Способ 5: Использование DeepFlatten () Метод

Для достижения глубокого выравнивания вложенных списков нам нужна помощь встроенного модуля, известного как DeepFlatten который является частью Iteration_UTIOLIONTIOLIONTIOLTIONS библиотека.

Примечание: С Iteration_UTIOLIONTIOLIONTIOLTIONS Не является частью стандартной библиотеки Python, вы должны явно установить ее, используя следующую команду:

pip install iteration-utilities

Давайте посмотрим на следующую программу, чтобы понять, как DeepFlatten Модуль, перемещается на несколько уровний глубины, а затем выравнивает данный список.

from iteration_utilities import deepflatten
li = [ [100,150], [ [200 ] ], [ 300, 400 ] ]
print("list li before flattening", li)
flat_li = list(deepflatten(li))
print("list li after flattening", flat_li)
print("\n")
deep_li = [[0,1], [[2, [3, [4, [5, [6 ]]]]]], [7,8]]
print("list deep_li before flattening", li)
flat_li = list(deepflatten(li))
print("list deep_li after flattening", flat_li)

Выход:

list li before flattening [[100, 150], [[200]], [300, 400]]
list li after flattening [100, 150, 200, 300, 400]

list deep_li before flattening [[100, 150], [[200]], [300, 400]]
list deep_li after flattening [100, 150, 200, 300, 400]

Приведенный выше пример ясно изображает, насколько эффективны DeepFlatten Метод есть. Я упомянул пару списков с различными глубинами, так что вы можете иметь представление о полезности DeepFlatten функция. Вам даже не нужна другая функция или модуль, если вы используете DeepFlatten () функция. Это самодостаточное и может сгладить данный список самостоятельно.

Метод 6: Использование пока цикла

Другим подходом Чтобы сгладить данный список – использовать цикл «В то время как» для прохождения всех элементов из данного списка на основе типа элемента, а затем добавить его в новый сплющенный список. Давайте посмотрим на код, приведенный ниже, чтобы понять, как это работает.

def flatten(l): 
    li = []
    while l: #iterate until provided list is empty.
            e = l.pop()
            if type(e) == list: #check type of the poped item.
                    l.extend(e) #if popped item is list then extend the item to given list.
            else:
                    li.append(e) #if popped item is not list then add it to li
    li.sort()
    return li


a = [[100, 150], [[200]], [300, 400]]
print("list before flattening: ", a)
print("list after flattening: ", flatten(a))

Выход:

list before flattening:  [[100, 150], [[200]], [300, 400]]
list after flattening:  [100, 150, 200, 300, 400]

Способ 7: Использование рекурсии

Если вы в порядке с рекурсией, вы можете взглянуть на то, как сглаживать списки, используя рекурсию. Преимущество этого метода в том, что он не нужен какой-либо другой импорт.

Давайте посмотрим на следующий пример, чтобы понять, как мы можем использовать рекурсию, чтобы сглаживать вложенные списки.

li = [[100, 150], [[200]], [300, 400]]

def flatten(l):
    if len(l) == 1:
            if type(l[0]) == list:
                    result = flatten(l[0])   
            else:
                    result = l
    elif type(l[0]) == list:
            result = flatten(l[0]) + flatten(l[1:])
    else:
            result = [l[0]] + flatten(l[1:])
    return result

print(flatten(li))

Выход:

[100, 150, 200, 300, 400]

📚 Список списков с использованием библиотек Python

Мы можем использовать мощность различных библиотек Python и используйте встроенные методы в том, чтобы сглаживать списки в Python. Давайте пойдем быстро через некоторые из них в этой статье.

✨ панда

from pandas.core.common import flatten

li = [[100, 150], [200], [300, 400]]

print("list before flattening: ", li)
print("list after flattening: ", list(flatten(li)))

✨ matplotlib

from matplotlib.cbook import flatten

li = [[100, 150], [200], [300, 400]]

print("list before flattening: ", li)
print("list after flattening: ", list(flatten(li)))

✨ Unipath.

import unipath
from unipath.path import flatten

li = [[100, 150], [200], [300, 400]]

print("list before flattening: ", li)
print("list after flattening: ", list(flatten(li)))

✨ Setuptools.

from setuptools.namespaces import flatten

li = [[100, 150], [200], [300, 400]]

print("list before flattening: ", li)
print("list after flattening: ", list(flatten(li)))

✨ Functools

import functools
import operator

li = [[100, 150], [200], [300, 400]]

print("list before flattening: ", li)
print("list after flattening: ",(functools.reduce(operator.concat, li)))

Выход:

Вывод в случае всех вышеуказанных кодов будет таким же приведен ниже.

list before flattening:  [[100, 150], [[200]], [300, 400]]
list after flattening:  [100, 150, [200], 300, 400]

Заключение

Мы узнали следующее в этой статье:

  • Что такое список выравнивания и типы списка.
  • Используя для цикла, чтобы сгладить список.
  • Используя понимание списка для сглаживания списка.
  • Использование ITERTOOLS.CHAIN (), чтобы сгладить список.
  • Используя метод Flatten, чтобы сгладить список.
  • Использование метода DeepFlatten () для сглаживания списка.
  • Используя цикл While, чтобы сгладить список.
  • Использование рекурсии, чтобы сгладить список.
  • Список лишних с использованием библиотек Python:
    • Панда
    • Matplotlib.
    • Unipath.
    • SetUpeWools.
    • Фанкоул

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

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.

Вы можете связаться со мной @: