Свести список списка в Python

Python Программирование и разработка

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

Неглубокое сглаживание: это означает сглаживание списка только до одного уровня глубины.

Глубокое сглаживание: это означает сглаживание списка до любого уровня глубины.

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

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

lst = [[30,7],[8,9],[30,7],[8,9]]
flatten_list = []
for i in lst:
for item in i:
flatten_list.append(item)
print(«list before flattening», lst)
print («flattened list: «,flatten_list)

Выход:

list before flattening [[30, 7], [8, 9], [30, 7], [8, 9]]
flattened list:  [30, 7, 8, 9, 30, 7, 8, 9]

Строка 1 : Мы создали список списков.

Строка 3–5 : В этой строке мы запускаем вложенный цикл for. Внешний цикл for предназначен для основного списка, а внутренний цикл for — для элементов. Если вы видите этот вложенный цикл, вы обнаружите, что каждый элемент из списка подэлементов был извлечен и добавлен в новый список (flatten_list). Таким образом, теперь каждый элемент в подсписке отделен.

Строки с 6 по 7 : Эти строки показывают исходный список до и после выравнивания списка.

Метод 2: использование понимания списка

Понимание списка — это расширенный метод вышеупомянутого цикла for, в котором мы пишем все в одной строке.

lst = [[30,7],[8,9],[30,7],[8,9]]
print(«list before flattening», lst)
print («list after flattening»,[item for i in lst for item in i])

Выход:

list before flattening [[30, 7], [8, 9], [30, 7], [8, 9]]
list after flattening [30, 7, 8, 9, 30, 7, 8, 9]

Строка 1 : Мы создали список из списка.
Строка 3 : В этой строке выполняются два цикла в одной строке для выравнивания списка.

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

Другой способ — использовать библиотеку flatten (), как показано в программе, приведенной ниже. Но метод сглаживания будет работать только на одном уровне вложенного списка; если есть глубоко вложенные списки, он не сгладит список. Ниже приведены примеры как одиночных, так и глубоко вложенных программ.

from iteration_utilities import flatten
lst = [[30,7],[8,9],[30,7],[8,9]]
print(list(flatten(lst)))

Выход:

[30, 7, 8, 9, 30, 7, 8, 9]

Строка 3 : мы вызываем метод flatten и передаем ему список в качестве аргумента. Приведенный выше вывод показывает, что наш список списков теперь выровнен.

Теперь мы увидим глубоко вложенный список для метода flatten.

from iteration_utilities import flatten
lst = [[30,7],[8,9],[30,7],[8,9],[[2]]]
print(list(flatten(lst)))

Выход:

[30, 7, 8, 9, 30, 7, 8, 9, [2]]

Строка 2 : Мы создали вложенный список, а также добавили еще один элемент [[2]], который глубоко вложен.

Строка 3 : мы вызываем метод flatten и передаем ему список в качестве аргумента. Приведенный выше вывод показывает, что полностью сгладить глубоко вложенный список не удалось, потому что элемент [2] все еще находится внутри списка.

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

Другой метод — deepflatten (), который может сгладить глубоко вложенный список, что не выполняется методом сглаживания, как мы видели в приведенном выше примере.

from iteration_utilities import deepflatten
lst = [[30,7],[8,9],[30,7],[8,9],[ [200 ] ]]
print(«list lst before flattening», lst)
flatten_lst = list(deepflatten(lst))
print(«list lst after flattening», flatten_lst)

Выход:

list lst before flattening [[30, 7], [8, 9], [30, 7], [8, 9], [[200]]]
list lst after flattening [30, 7, 8, 9, 30, 7, 8, 9, 200]

Строка 1 : мы импортируем метод deepflatten.

Строка 4 : мы вызываем метод deepflatten и передаем ему глубоко вложенный список в качестве аргумента. Приведенный выше вывод показывает, что наш глубоко вложенный список теперь выровнен.

Метод 5: использование метода pandas flatten ()

Этот метод сглаживает список, даже если список глубоко вложен.

from pandas.core.common import flatten
lst = [[30,7],[8,9],[30,7],[8,9],[[2]]]
print(«list before flattening», lst)
print («flattened list: «,list(flatten(lst)))

Выход:

list before flattening [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
flattened list:  [30, 7, 8, 9, 30, 7, 8, 9, 2]

Строка 4 : мы вызываем метод flatten и передаем ему глубоко вложенный список в качестве аргумента. Приведенный выше вывод показывает, что наш глубоко вложенный список теперь выровнен.

Метод 6 : использование метода matplotlib flatten ()

Этот метод сглаживает список, даже если список глубоко вложен.

from matplotlib.cbook import flatten
lst = [[30,7],[8,9],[30,7],[8,9],[[2]]]
print(«list before flattening», lst)
print («flattened list: «,list(flatten(lst)))

Выход:

list before flattening [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
flattened list:  [30, 7, 8, 9, 30, 7, 8, 9, 2]

Строка 4: мы вызываем метод flatten и передаем ему глубоко вложенный список в качестве аргумента. Приведенный выше вывод показывает, что наш глубоко вложенный список теперь выровнен.

Метод 7. Использование метода unipath flatten ()

Этот метод сглаживает список, даже если список глубоко вложен.

import unipath
from unipath.path import flatten
lst = [[30,7],[8,9],[30,7],[8,9],[[2]]]
print(«list before flattening», lst)
print («flattened list: «,list(flatten(lst)))

Выход:

list before flattening [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
flattened list:  [30, 7, 8, 9, 30, 7, 8, 9, 2]

Строка 5 : мы вызываем метод flatten и передаем ему глубоко вложенный список в качестве аргумента. Приведенный выше вывод показывает, что наш глубоко вложенный список теперь выровнен.

Метод 8: использование метода setuptools flatten ()

Этот метод сводит список только к одному уровню.

from setuptools.namespaces import flatten
lst = [[30,7],[8,9],[30,7],[8,9],[[2]]]
print(«list before flattening», lst)
print («flattened list: «,list(flatten(lst)))

Выход:

list before flattening [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
flattened list:  [30, 7, 8, 9, 30, 7, 8, 9, [2]]

Строка 2 : Мы создали вложенный список, а также добавили еще один элемент [[2]], который глубоко вложен.

Строка 4 : мы вызываем метод flatten и передаем ему список в качестве аргумента. Приведенный выше вывод показывает, что полностью сгладить глубоко вложенный список не удалось, потому что элемент [2] все еще находится внутри списка.

Метод 9: Использование метода itertools.chain

Чтобы распаковать список списков, мы также можем использовать метод itertools.chain. Этот метод также имеет два способа сгладить список списков. Оба метода приведены ниже. Эти методы также переводят список списка только на один уровень.

Использование itertools.chain.from_iterable

import itertools
lst = [[30,7],[8,9],[30,7],[8,9],[[2]]]
print(«list lst before flattening», lst)
flatten_lst = list((itertools.chain.from_iterable(lst)))
print(«list lst after flattening», flatten_lst)

Выход:

list lst before flattening [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
list lst after flattening [30, 7, 8, 9, 30, 7, 8, 9, [2]]

Строка 2 : Мы создали вложенный список, а также добавили еще один элемент [[2]], который глубоко вложен.

Строка 4 : мы вызываем метод itertools.chain.from_iterable () и передаем ему список в качестве аргумента. Приведенный выше вывод показывает, что полностью сгладить глубоко вложенный список не удалось, потому что элемент [2] все еще находится внутри списка.

Использование оператора *

import itertools
lst = [[30,7],[8,9],[30,7],[8,9],[[2]]]
print(«list lst before flattening», lst)
flatten_lst = list((itertools.chain(*lst)))
print(«list lst after flattening», flatten_lst)

Выход:

list lst before flattening [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
list lst after flattening [30, 7, 8, 9, 30, 7, 8, 9, [2]]

Метод 10: Использование метода numpy.ravel ()

Другой метод — numpy.ravel, который также выравнивает вложенный список. Но этот метод сводится к одному уровню вложенности.

import numpy as np
lst = np.array([[30,7],[8,9],[30,7],[8,9]])
flatten_lst = lst.ravel()
print(«list before flattening», lst)
print («flattened list: «,list(flatten(lst)))

Выход:

list before flattening [[30  7]
[ 8  9]
[30  7]
[ 8  9]]
flattened list:  [30, 7, 8, 9, 30, 7, 8, 9]

Строка 3 : мы называем метод numpy ravel. Приведенный выше вывод показывает, что наш массив вложенных списков теперь сплющен.

Метод 11: использование метода numpy reshape ()

Другой метод — numpy reshape, который также выравнивает вложенный список. Но этот метод сводится к одному уровню вложенности.

import numpy as np
lst = np.array([[30,7],[8,9],[30,7],[8,9]])
flatten_lst = lst.reshape(1)
print(«list before flattening», lst)
print («flattened list: «,list(flatten(lst)))

list before flattening [[30  7]
[ 8  9]
[30  7]
[ 8  9]]
flattened list:  [30, 7, 8, 9, 30, 7, 8, 9]

Строка 3 : мы вызываем метод reshape (-1). Приведенный выше вывод показывает, что наш массив вложенных списков теперь сплющен.

Метод 12: использование метода numpy flatten ()

Другой метод — numpy flatten (), который также выравнивает вложенный список. Но этот метод сводится к одному уровню вложенности.

import numpy as np
lst = np.array([[30,7],[8,9],[30,7],[8,9]])
flatten_lst = lst.flatten()
print(«list before flattening», lst)
print («flattened list: «,list(flatten(lst)))

Выход:

list before flattening [[30  7]
[ 8  9]
[30  7]
[ 8  9]]
flattened list:  [30, 7, 8, 9, 30, 7, 8, 9]

Строка 5 : мы вызываем метод flatten. Приведенный выше вывод показывает, что наш массив вложенных списков теперь сплющен.

Метод 13: Использование метода numpy.concatenate ()

Другой метод — numpy.concatenate (), который также выравнивает вложенный список. Но этот метод сводится к одному уровню вложенности.

import numpy as np
lst = np.array([[30,7],[8,9],[30,7],[8,9]])
flatten_lst = list(np.concatenate(lst))
print(«list before flattening», lst)
print («flattened list: «,list(flatten(lst)))

Выход:

list before flattening [[30  7]
[ 8  9]
[30  7]
[ 8  9]]
flattened list:  [30, 7, 8, 9, 30, 7, 8, 9]

Строка 3 : мы вызываем метод numpy.concatenate () и передаем в него массив вложенных списков в качестве аргумента. Приведенный выше вывод показывает, что наш массив вложенных списков теперь сплющен.

Метод 14: использование плоского метода numpy

Другой метод — numpy flat, который также выравнивает вложенный список. Но этот метод сводится к одному уровню вложенности.

import numpy as np
lst = np.array([[30,7],[8,9],[30,7],[8,9]])
flatten_lst = list(lst.flat)
print(«list before flattening», lst)
print («flattened list: «,list(flatten(lst)))

Выход:

list before flattening [[30  7]
[ 8  9]
[30  7]
[ 8  9]]
flattened list:  [30, 7, 8, 9, 30, 7, 8, 9]

Строка 3 : мы вызываем метод flat, и вышеприведенный вывод показывает, что наш массив вложенных списков теперь сплющен.

Заключение

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

Читайте также:  Как создать полиморфных компонентов в TypeScript?
Оцените статью
bestprogrammer.ru
Добавить комментарий