logo

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)>

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