Автор оригинала: 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.
Вы можете связаться со мной @: