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)> |
miasto w usa
>
>
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.
10 procent z 60
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.
lista tablic sortowania Java
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
data lokalna Java
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