Spłaszcz listę listy w Python

Spłaszcz listę listy w Python
W tym artykule zobaczymy, jak możemy spłaszczyć listę listy na różne sposoby. Przed kontynuowaniem musimy wiedzieć o różnicy między płytkim spłaszczaniem a głębokim spłaszczaniem.

Płytkie spłaszczenie: oznacza to spłaszczenie listy tylko do jednego poziomu głębokości.

Głębokie spłaszczenie: Oznacza to spłaszczenie listy do dowolnego poziomu głębokości.

Tematy, które zamierzamy omówić w tym artykule, są jak poniżej:

  • Metoda 1: Zastosowanie do pętli
  • Metoda 2: Korzystanie ze zrozumienia listy
  • Metoda 3: Za pomocą metody Flatten ()
  • Metoda 4: Za pomocą metody Deepflatten ()
  • Metoda 5: Za pomocą spłaszczania pandy
  • Metoda 6: Za pomocą splatania matplotlib
  • Metoda 7: Zastosowanie metody spłaszczania Unipath
  • Metoda 8: Za pomocą metody spłaszczenia setauptools
  • Metoda 9: Korzystanie z IterTools.Metoda łańcucha
  • Metoda 10: Za pomocą metody Numpy Ravel
  • Metoda 11: Zastosowanie metody Numpy Reshape
  • Metoda 12: Za pomocą metody Numpy Flatten
  • Metoda 13: Korzystanie z Numpy.Metoda konatenatu
  • Metoda 14: Za pomocą metody Numpy Flat

Metoda 1: Zastosowanie do pętli

W tej metodzie będziemy używać pętli, co jest bardzo powszechne w każdym języku programowania. Itertujemy każdy element na liście, a następnie dalej iterujemy ten element, jak pokazano w poniższym programie.

LST = [[30,7], [8,9], [30,7], [8,9]]
flatten_list = []
bo ja w LST:
Dla przedmiotu w i:
flatten_list.Dodatek (pozycja)
Drukuj („Lista przed spłaszczeniem”, LST)
Drukuj („Lista spłaszczona:”, Flatten_List)

Wyjście:

Lista przed spłaszczeniem [[30, 7], [8, 9], [30, 7], [8, 9]]
Lista spłaszczona: [30, 7, 8, 9, 30, 7, 8, 9]

Linia 1: Utworzyliśmy listę list.

Linia 3 do 5: W tej linii prowadzimy zagnieżdżoną pętlę. Zewnętrzna pętla jest dla głównej listy, a wewnętrzna pętla jest dla elementów. Jeśli zobaczysz tę zagnieżdżoną pętlę, przekonasz się, że każdy element z listy podelementu został wyodrębniony i dołączony do nowej listy (Flatten_List). W ten sposób każdy element na liście jest teraz oddzielony.

Linia 6 do 7: Te linie pokazujące oryginalną listę przed i po spłaszczeniu listy.

Metoda 2: Za pomocą rozumienia listy

Rozumienie listy jest zaawansowaną metodą powyższej pętli, w której piszemy wszystko w jednym wierszu.

LST = [[30,7], [8,9], [30,7], [8,9]]
Drukuj („Lista przed spłaszczeniem”, LST)
Drukuj („Lista po spłaszczeniu”, [pozycja dla i w LST dla pozycji w i])

Wyjście:

Lista przed spłaszczeniem [[30, 7], [8, 9], [30, 7], [8, 9]]
Lista po spłaszczeniu [30, 7, 8, 9, 30, 7, 8, 9]

Linia 1: Utworzyliśmy listę listy.
Linia 3: Ta linia działająca dwie pętle w jednej linii do spłaszczenia listy.

Metoda 3: Za pomocą metody Flatten ()

Inną metodą jest użycie biblioteki Flatten (), jak pokazano w podanym poniżej programie. Ale metoda spłaszczona będzie działać tylko do jednego poziomu zagnieżdżonej listy; Jeśli istnieją głęboko zagnieżdżone listy, nie spłaszczy listy. Zarówno przykładowe zagnieżdżone, jak i głęboko zagnieżdżone przykłady programu podano poniżej.

Z ITERERATION_UTILINITY Import Flatten
LST = [[30,7], [8,9], [30,7], [8,9]]
druk (lista (flatten (lst)))

Wyjście:

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

Linia 3: Nazywamy metodę spłaszczoną i przekazujemy listę jako argument. Powyższe dane wyjściowe pokazuje, że nasza lista list jest teraz spłaszczona.

Teraz zobaczymy głęboko zagnieżdżoną listę metody Flatten.

Z ITERERATION_UTILINITY Import Flatten
lst = [[30,7], [8,9], [30,7], [8,9], [[2]]]]
druk (lista (flatten (lst)))

Wyjście:

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

Linia 2: Stworzyliśmy zagnieżdżoną listę, a także dodaliśmy kolejny element [[2]], który jest głęboko zagnieżdżony.

Linia 3: Nazywamy metodę spłaszczoną i przekazujemy listę jako argument. Powyższe wyjście pokazuje, że nie jest to zrobione, aby w pełni spłaszczyć głęboko zagnieżdżoną listę, ponieważ element [2] wciąż znajduje się w liście.

Metoda 4: Za pomocą metody Deepflatten ()

Drugą metodą jest Deepflatten (), która może spłaszczyć listę głęboko zagnieżdżoną, która nie jest wykonywana metodą spłaszczoną, jak widzieliśmy w powyższym przykładzie.

Z ITeration_utilites Import Deepflatten
lst = [[30,7], [8,9], [30,7], [8,9], [[200]]]]
Drukuj („List LST przed spłaszczeniem”, LST)
flatten_lst = lista (Deepflatten (LST))
Drukuj („List LST After Splating”, Flatten_Lst)

Wyjście:

Lista LST przed spłaszczeniem [[30, 7], [8, 9], [30, 7], [8, 9], [[200]]]
Lista LST po spłaszczeniu [30, 7, 8, 9, 30, 7, 8, 9, 200]

Linia 1: Importujemy metodę Deepflatten.

Linia 4: Nazywamy metodę Deepflatten i przekazujemy głęboko zagnieżdżoną listę jako argument. Powyższe wyjście pokazuje, że nasza głęboko zagnieżdżona lista jest teraz spłaszczona.

Metoda 5: Za pomocą metody pandas flatten ()

Ta metoda wykonuje listę spłaszcza, nawet jeśli lista jest głęboko zagnieżdżona.

z pandy.rdzeń.wspólny import spłaszcz
lst = [[30,7], [8,9], [30,7], [8,9], [[2]]]]
Drukuj („Lista przed spłaszczeniem”, LST)
Drukuj („Lista spłaszczona:”, Lista (Flatten (LST))))

Wyjście:

Lista przed spłaszczeniem [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Lista spłaszczona: [30, 7, 8, 9, 30, 7, 8, 9, 2]

Linia 4: Nazywamy metodę spłaszczoną i przekazujemy głęboko zagnieżdżoną listę jako argument. Powyższe wyjście pokazuje, że nasza głęboko zagnieżdżona lista jest teraz spłaszczona.

Metoda 6: Za pomocą metody MATPlotlib Flatten ()

Ta metoda wykonuje listę spłaszcza, nawet jeśli lista jest głęboko zagnieżdżona.

z matplotlib.Cbook import Flatten
lst = [[30,7], [8,9], [30,7], [8,9], [[2]]]]
Drukuj („Lista przed spłaszczeniem”, LST)
Drukuj („Lista spłaszczona:”, Lista (Flatten (LST))))

Wyjście:

Lista przed spłaszczeniem [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Lista spłaszczona: [30, 7, 8, 9, 30, 7, 8, 9, 2]

Linia 4: Nazywamy tę metodę spłaszczoną i przekazujemy głęboko zagnieżdżoną listę jako argument. Powyższe wyjście pokazuje, że nasza głęboko zagnieżdżona lista jest teraz spłaszczona.

Metoda 7: Za pomocą metody Unipath Flatten ()

Ta metoda wykonuje listę spłaszcza, nawet jeśli lista jest głęboko zagnieżdżona.

importować Unipath
z Unipath.Import ścieżki spłaszcz
lst = [[30,7], [8,9], [30,7], [8,9], [[2]]]]
Drukuj („Lista przed spłaszczeniem”, LST)
Drukuj („Lista spłaszczona:”, Lista (Flatten (LST))))

Wyjście:

Lista przed spłaszczeniem [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Lista spłaszczona: [30, 7, 8, 9, 30, 7, 8, 9, 2]

Linia 5: Nazywamy metodę spłaszczoną i przekazujemy głęboko zagnieżdżoną listę jako argument. Powyższe wyjście pokazuje, że nasza głęboko zagnieżdżona lista jest teraz spłaszczona.

Metoda 8: Za pomocą metody setuptools flatten ()

Ta metoda wykonuje listę spłaszczoną tylko na jednym poziomie.

z Setuptools.Przestrzenie nazw importują spłaszcz
lst = [[30,7], [8,9], [30,7], [8,9], [[2]]]]
Drukuj („Lista przed spłaszczeniem”, LST)
Drukuj („Lista spłaszczona:”, Lista (Flatten (LST))))

Wyjście:

Lista przed spłaszczeniem [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Lista spłaszczona: [30, 7, 8, 9, 30, 7, 8, 9, [2]]

Linia 2: Stworzyliśmy zagnieżdżoną listę, a także dodaliśmy kolejny element [[2]], który jest głęboko zagnieżdżony.

Linia 4: Nazywamy metodę spłaszczoną i przekazujemy listę jako argument. Powyższe wyjście pokazuje, że nie jest to zrobione, aby w pełni spłaszczyć głęboko zagnieżdżoną listę, ponieważ element [2] wciąż znajduje się w liście.

Metoda 9: Korzystanie z IterTools.Metoda łańcucha

Aby rozpakować listę list, możemy również użyć iTerTools.Metoda łańcucha. Ta metoda ma dwa sposoby spłaszczenia listy list. Obie metody podano poniżej. Te metody również przerażają listę listy tylko do jednego poziomu.

Za pomocą iTerTools.łańcuch.From_iterable

importować itertools
lst = [[30,7], [8,9], [30,7], [8,9], [[2]]]]
Drukuj („List LST przed spłaszczeniem”, LST)
flatten_lst = lista ((iTerTools.łańcuch.from_iterable (lst))))
Drukuj („List LST After Splating”, Flatten_Lst)

Wyjście:

Lista LST przed spłaszczeniem [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Lista LST po spłaszczeniu [30, 7, 8, 9, 30, 7, 8, 9, [2]]

Linia 2: Stworzyliśmy zagnieżdżoną listę, a także dodaliśmy kolejny element [[2]], który jest głęboko zagnieżdżony.

Linia 4: Nazywamy metodę itertools.łańcuch.from_iterable () i przekazaj listę jako argument. Powyższe wyjście pokazuje, że nie jest to zrobione, aby w pełni spłaszczyć głęboko zagnieżdżoną listę, ponieważ element [2] wciąż znajduje się w liście.

Korzystanie z * operatora

importować itertools
lst = [[30,7], [8,9], [30,7], [8,9], [[2]]]]
Drukuj („List LST przed spłaszczeniem”, LST)
flatten_lst = lista ((iTerTools.łańcuch (*lst)))
Drukuj („List LST After Splating”, Flatten_Lst)

Wyjście:

Lista LST przed spłaszczeniem [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Lista LST po spłaszczeniu [30, 7, 8, 9, 30, 7, 8, 9, [2]]

Metoda 10: Za pomocą Numpy.metoda ravel ()

Inną metodą jest Numpy.Ravel, który również spłaszcza zagnieżdżoną listę. Ale ta metoda spłaszcza się do jednego poziomu zagnieżdżonych.

importować Numpy jako NP
LST = NP.tablica ([[30,7], [8,9], [30,7], [8,9]])
flatten_lst = lst.gmatwać()
Drukuj („Lista przed spłaszczeniem”, LST)
Drukuj („Lista spłaszczona:”, Lista (Flatten (LST))))

Wyjście:

Lista przed spłaszczeniem [[30 7]
[8 9]
[30 7]
[8 9]]
Lista spłaszczona: [30, 7, 8, 9, 30, 7, 8, 9]

Linia 3: Nazywamy metodę Numpy Ravel. Powyższe wyjście pokazuje, że nasza zagnieżdżona tablica listy jest teraz spłaszczona.

Metoda 11: Za pomocą metody Numpy Reshape ()

Drugą metodą jest Numpy Reshape, który również spłaszcza zagnieżdżoną listę. Ale ta metoda spłaszcza się do jednego poziomu zagnieżdżonych.

importować Numpy jako NP
LST = NP.tablica ([[30,7], [8,9], [30,7], [8,9]])
flatten_lst = lst.Reshape (-1)
Drukuj („Lista przed spłaszczeniem”, LST)
Drukuj („Lista spłaszczona:”, Lista (Flatten (LST))) Lista przed spłaszczeniem [[30 7]
[8 9]
[30 7]
[8 9]]
Lista spłaszczona: [30, 7, 8, 9, 30, 7, 8, 9]

Linia 3: Nazywamy metodę przekształcenia (-1). Powyższe wyjście pokazuje, że nasza zagnieżdżona tablica listy jest teraz spłaszczona.

Metoda 12: Za pomocą metody Numpy Flatten ()

Drugą metodą jest Numpy Flatten (), która również spłaszcza zagnieżdżoną listę. Ale ta metoda spłaszcza się do jednego poziomu zagnieżdżonych.

importować Numpy jako NP
LST = NP.tablica ([[30,7], [8,9], [30,7], [8,9]])
flatten_lst = lst.spłaszczyć()
Drukuj („Lista przed spłaszczeniem”, LST)
Drukuj („Lista spłaszczona:”, Lista (Flatten (LST))))


Wyjście:

Lista przed spłaszczeniem [[30 7]
[8 9]
[30 7]
[8 9]]
Lista spłaszczona: [30, 7, 8, 9, 30, 7, 8, 9]

Linia 5: Nazywamy metodę spłaszczoną. Powyższe wyjście pokazuje, że nasza zagnieżdżona tablica listy jest teraz spłaszczona.

Metoda 13: Korzystanie z Numpy.metoda conatenate ()

Inną metodą jest Numpy.conatenate (), który również spłaszcza zagnieżdżoną listę. Ale ta metoda spłaszcza się do jednego poziomu zagnieżdżonych.

importować Numpy jako NP
LST = NP.tablica ([[30,7], [8,9], [30,7], [8,9]])
flatten_lst = lista (NP.Conatenate (LST))
Drukuj („Lista przed spłaszczeniem”, LST)
Drukuj („Lista spłaszczona:”, Lista (Flatten (LST))))

Wyjście:

Lista przed spłaszczeniem [[30 7]
[8 9]
[30 7]
[8 9]]
Lista spłaszczona: [30, 7, 8, 9, 30, 7, 8, 9]

Linia 3: Numpy nazywamy metodę.Conatenate () i przekazuj zagnieżdżoną tablicę list jako argument. Powyższe wyjście pokazuje, że nasza zagnieżdżona tablica listy jest teraz spłaszczona.

Metoda 14: Za pomocą metody Numpy Flat

Inną metodą jest Numpy Flat, który również spłaszcza zagnieżdżoną listę. Ale ta metoda spłaszcza się do jednego poziomu zagnieżdżonych.

importować Numpy jako NP
LST = NP.tablica ([[30,7], [8,9], [30,7], [8,9]])
flatten_lst = lista (LST.płaski)
Drukuj („Lista przed spłaszczeniem”, LST)
Drukuj („Lista spłaszczona:”, Lista (Flatten (LST))))

Wyjście:

Lista przed spłaszczeniem [[30 7]
[8 9]
[30 7]
[8 9]]
Lista spłaszczona: [30, 7, 8, 9, 30, 7, 8, 9]

Linia 3: Nazywamy metodę płaską, a powyższe wyjście pokazuje, że nasza zagnieżdżona tablica listy jest teraz spłaszczona.

Wniosek:

Na tym blogu pokazaliśmy różne metody, których możemy użyć do spłaszczenia naszej listy list. Wszystkie powyższe metody działają idealnie dla jednego poziomu zagnieżdżonej listy. Ale jeśli istnieją głęboko zagnieżdżone listy, niektóre z powyższych metod działają idealnie. Tak więc zależy od Ciebie i zgodnie z wymaganiami programu, której metody chcesz użyć.

Kod tego artykułu jest również dostępny w linku GitHub:
https: // github.com/shekharpandey89/flatten-the-list-list