Python – Spłaszcz listę do poszczególnych elementów
W tym artykule dowiemy się, jak spłaszczyć listę list poprzez zrozumienie list w Pythonie.
Czasami podczas pracy z listą w Pythonie możemy mieć problem w którym musimy dokonać spłaszczenia listy, czyli skonwertować listę mieszaną na spłaszczoną. Może to mieć zastosowania w domenach, które używają list 1D jako danych wejściowych.
Omówmy pewne sposoby wykonania tego zadania.
Przykład:
Input : [[1,3, 'geeks'], [4,5], [6, 'best']] Output : [1, 3, 'geeks', 4, 5, 6, 'best'] Explaination: Flattening convert a mixed list to a flattened one.
Jak spłaszczyć listę do poszczególnych elementów w Pythonie
Poniżej znajdują się metody, które omówimy w artykule Jak spłaszczyć listę list w Pythonie:
- Spłaszcz listę za pomocą zrozumienie listy
- Spłaszcz listę za pomocą suma()
- Spłaszcz listę za pomocą pętla
- Spłaszcz listę za pomocą metoda flatten().
- Spłaszcz listę za pomocą łańcuch() z isinstancja()
- Spłaszcz listę za pomocą zmniejszyć() funkcjonować
- Spłaszcz listę za pomocą groupby
- Spłaszcz listę za pomocą itertools.chain.from_iterable()
- Spłaszcz listę za pomocą rekurencji
1. Używanie rozumienia list do spłaszczania listy list
Tutaj używamy zrozumienie listy aby spłaszczyć listę z 2D do 1D.
Python3
res> => [i> for> row> in> [[> 1> ,> 3> ,> 'geeks'> ], [> 4> ,> 5> ],> > [> 6> ,> 'best'> ]]> for> i> in> row]> print> (res)> |
Wyjście:
[1, 3, 'geeks', 4, 5, 6, 'best']
Złożoność czasowa: O(n) gdzie n jest liczbą elementów na liście
Przestrzeń pomocnicza: O(n) gdzie n jest liczbą elementów na liście
2. Użycie funkcji sum() do spłaszczenia listy list
Tutaj używamy funkcja suma(). w którym przekazaliśmy test_list jako obiekt iterowalny jako pierwszy parametr, a drugi parametr jako pustą listę, w której przechowuje element.
Python3
test_list> => [[> 1> ,> 3> ,> 'gfg'> ], [> 4> ,> 5> ], [> 6> ,> 'best'> ]]> test_list> => sum> (test_list, [])> print> (test_list)> |
Wyjście:
[1, 3, 'gfg', 4, 5, 6, 'best']
Złożoność czasowa: O(n), gdzie n jest długością listy test_list.
Przestrzeń pomocnicza: O(n) tworzona jest dodatkowa przestrzeń o rozmiarze n, gdzie n jest liczbą elementów na liście
3. Używanie f lub Zapętl do Spłaszcz listę list
Do wykonania tego zadania można wykorzystać kombinację powyższych funkcjonalności. W tym przypadku sprawdzamy instancję listy i spłaszczamy ją, a resztę elementów dodajemy do listy brutalnie.
Python3
def> flatten(test_list):> > if> isinstance> (test_list,> list> ):> > temp> => []> > for> ele> in> test_list:> > temp.extend(flatten(ele))> > return> temp> > else> :> > return> [test_list]> # Initializing list> test_list> => [> 'gfg'> ,> 1> , [> 5> ,> 6> ,> 'geeks'> ],> 67.4> , [> 5> ],> 'best'> ]> # Flatten List to individual elements> # using loop + isinstance()> res> => flatten(test_list)> > # printing result> print> (> 'The List after flattening : '> +> str> (res))> |
Wyjście:
The List after flattening : [‘gfg’, 1, 5, 6, ‘geeks’, 67.4, 5, ‘best’]
Złożoność czasowa: tej funkcji to O(n), gdzie n jest całkowitą liczbą elementów na zagnieżdżonej liście.
Złożoność przestrzeni: tej funkcji to także O(n), ponieważ dla każdego rekurencyjnego wywołania tworzona jest nowa lista temp w celu przechowywania spłaszczonej listy podrzędnej, a ostateczna spłaszczona lista jest przechowywana w zmiennej res.
4. Użycie metody flatten() do spłaszczenia listy list
Pandy flatten() zwraca kopię tablicy zwiniętą w jeden wymiar.
Python3
from> pandas.core.common> import> flatten> l> => [[> 1> ,> 3> ,> 'gfg'> ], [> 4> ,> 5> ], [> 6> ,> 'best'> ]]> print> (> list> (flatten(l)))> |
Wyjście:
[1, 3, 'gfg', 4, 5, 6, 'best']
5. U śpiewaj chain() z isinstance() spłaszczyć listę list
Jest to kolejny sposób realizacji tego zadania. W tym, Który wykonujemy zadanie iteracji za pomocą łańcuch() i sprawdzanie instancji list , co odbywa się za pomocą isinstancja() .
Python3
from> itertools> import> chain> # Initializing list> test_list> => [> 'gfg'> ,> 1> , [> 5> ,> 6> ,> 'geeks'> ],> 67.4> , [> 5> ],> 'best'> ]> # Flatten List to individual elements> # using chain() + isinstance()> res> => list> (chain(> *> [ele> if> isinstance> (ele,> list> )> > else> [ele]> for> ele> in> test_list]))> > # printing result> print> (> 'The List after flattening : '> +> str> (res))> |
Wyjście :
The List after flattening : [‘gfg’, 1, 5, 6, ‘geeks’, 67.4, 5, ‘best’]
Złożoność czasowa: NA)
Przestrzeń pomocnicza: NA)
6. Użycie funkcji redukcji() do spłaszczenia listy list
The zmniejszyć() funkcja jest zdefiniowana w narzędzia funkcyjne moduł. Stosuje funkcję dwóch argumentów w sposób ciągły w danej sekwencji i zwraca pojedynczą wartość.
Python3
from> functools> import> reduce> > # Initializing list> test_list> => [[> 1> ,> 3> ,> 'gfg'> ], [> 4> ,> 5> ], [> 6> ,> 'best'> ]]> > # Flatten List to individual elements> # using reduce()> res> => reduce> (> lambda> x,y: x> +> y, test_list)> > # printing result> print> (> 'The List after flattening : '> +> str> (res))> #This code is contributed by Edula Vinay Kumar Reddy> |
Wyjście:
The List after Flattening : [1, 3, 'gfg', 4, 5, 6, 'best']
Złożoność czasowa: NA)
Przestrzeń pomocnicza: NA)
7. Używanie groupby do spłaszczania listy list
Zaimportuj Grupuj według moduł z itertools . Zdefiniuj test_list list. Zdefiniuj zmienną res jako pustą listę. Użyj zagnieżdżonej pętli for, aby iterować po elementach test_list.
Dla każdego elementu sprawdź, czy jest to lista, czy nie. Jeśli jest to lista, wykonaj iterację po każdym elemencie listy i dołącz go do zmiennej res. Jeśli nie jest to lista, dołącz element bezpośrednio do zmiennej res.
Wydrukuj zmienną res jako spłaszczoną listę.
Python3
from> itertools> import> groupby> # Initializing list> test_list> => [[> 1> ,> 3> ,> 'gfg'> ], [> 4> ,> 5> ], [> 6> ,> 'best'> ]]> # Flatten List to individual elements> # using groupby()> res> => [i> for> j> in> test_list> for> i> in> (j> if> isinstance> (j,> list> )> else> [j])]> > # printing result> print> (> 'The List after flattening : '> +> str> (res))> #This code is contributed by Rayudu.> |
Wyjście:
The List after flattening : [1, 3, 'gfg', 4, 5, 6, 'best']
Złożoność czasowa: Złożoność czasowa kodu wynosi O(n), gdzie n jest liczbą elementów na liście wejściowej. Zagnieżdżona pętla wykonuje iterację po każdym elemencie listy wejściowej dokładnie raz.
Złożoność przestrzeni: Złożoność przestrzenna kodu wynosi O(n), gdzie n jest liczbą elementów na liście wejściowej. Zmienna res służy do przechowywania spłaszczonej listy, która może mieć co najwyżej n elementów.
8. Używanie itertools.chain.from_iterable() do spłaszczania listy list
W tym przykładzie poniższy kod wykorzystuje itertools.chain.from_iterable() metoda spłaszczania zagnieżdżonej listy.
Rozłóżmy kod i wyjaśnijmy: Poniższy kod używa `itertools.chain.from_iterable()` do spłaszczenia zagnieżdżonej listy (`nested_list`) do pojedynczej listy (`flattened_list`), a następnie wypisuje wynik.
Python3
from> itertools> import> chain> nested_list> => [[> 1> ,> 2> ,> 3> ], [> 4> ,> 5> ], [> 6> ,> 7> ,> 8> ]]> flattened_list> => list> (chain.from_iterable(nested_list))> print> (flattened_list)> |
Wyjście :
[1, 2, 3, 4, 5, 6, 7, 8]
Złożoność czasowa: NA)
Przestrzeń pomocnicza: NA)
9. Stosowanie rekurencji do Spłaszcz listę list
W tym przykładzie poniższy kod definiuje funkcję flatten_list, która przyjmuje zagnieżdżoną listę jako dane wejściowe i zwraca spłaszczoną listę z pojedynczymi elementami. Spłaszczenie uzyskuje się za pomocą rekurencja .
Python3
def> flatten_list(lst):> > flat_list> => []> > for> item> in> lst:> > if> isinstance> (item,> list> ):> > flat_list.extend(flatten_list(item))> > else> :> > flat_list.append(item)> > return> flat_list> nested_list> => [[> 1> ,> 2> ,> 3> ], [> 4> , [> 5> ,> 6> ]], [> 7> ,> 8> ]]> flattened_list> => flatten_list(nested_list)> print> (flattened_list)> |
Wyjście :
[1, 2, 3, 4, 5, 6, 7, 8]
Złożoność czasowa: NA)
Przestrzeń pomocnicza: NA)
Omówiliśmy łącznie 9 sposobów spłaszczenia listy list. Spłaszczanie list w Pythonie służy do konwertowania listy zagnieżdżonych w jedną listę. Możesz użyć dowolnej z powyższych metod, aby spłaszczyć listę zgodnie ze swoimi wymaganiami.
Podobne lektury:
- Spłaszczanie listy połączonej
- Program w Pythonie do spłaszczania połączonej listy
- Pythona | Zgrupowane spłaszczanie listy