logo

Python – Izravnaj seznam na posamezne elemente

V tem članku se bomo naučili, kako sploščiti seznam seznamov z razumevanjem seznamov v Pythonu.

Včasih lahko pri delu s seznamom Python naletimo na težavo, ko moramo izvesti sploščitev seznama, torej pretvoriti mešani seznam v sploščenega. To ima lahko aplikacije v domenah, ki kot vhod uporabljajo sezname 1D.



Razpravljajmo o nekaterih načinih, na katere je mogoče izvesti to nalogo.

primer:

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

Kako sploščiti seznam na posamezne elemente v Pythonu

Spodaj so metode, ki jih bomo obravnavali v Kako sploščiti seznam seznamov v Pythonu:



  • Izravnajte seznam z uporabo razumevanje seznama
  • Izravnajte seznam z uporabo vsota()
  • Izravnajte seznam z uporabo zanka
  • Izravnajte seznam z uporabo metoda flatten().
  • Izravnajte seznam z uporabo veriga() z isinstance()
  • Izravnajte seznam z uporabo zmanjšati () funkcijo
  • Izravnajte seznam z uporabo groupby
  • Izravnajte seznam z uporabo itertools.chain.from_iterable()
  • Izravnajte seznam z uporabo rekurzije

1. Uporaba seznamskega razumevanja za sploščitev seznama seznamov

Tukaj uporabljamo razumevanje seznama da sploščite seznam iz 2D v 1D.

Python3






res>=> [i>for> row>in> [[>1>,>3>,>'geeks'>], [>4>,>5>],> >[>6>,>'best'>]]>for> i>in> row]> print>(res)>

javascript operaterji

>

>

Izhod:

[1, 3, 'geeks', 4, 5, 6, 'best']>

Časovna zapletenost: O(n), kjer je n število elementov na seznamu
Pomožni prostor: O(n), kjer je n število elementov na seznamu

2. Uporaba funkcije sum() za poravnavo seznama seznamov

Tukaj uporabljamo funkcija sum(). v katerem smo kot prvi parameter posredovali test_list kot objekt, ki ga je mogoče ponoviti, drugi parameter pa kot prazen seznam, v katerem hrani element.

Python3




test_list>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> test_list>=> sum>(test_list, [])> print>(test_list)>

>

>

Izhod:

[1, 3, 'gfg', 4, 5, 6, 'best']>

Časovna zapletenost: O(n), kjer je n dolžina seznama test_list.
Pomožni prostor: Ustvari se O(n) dodatni prostor velikosti n, kjer je n število elementov na seznamu

3. Uporaba f ali Zanka na Izravnajte seznam seznamov

Za izvedbo te naloge je mogoče uporabiti kombinacijo zgornjih funkcij. Pri tem preverimo primerek seznama in ga izravnamo, ostale elemente pa surovo dodamo na seznam.

Python3




runas v lupini powershell
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))>

>

>

Izhod:

The List after flattening : [‘gfg’, 1, 5, 6, ‘geeks’, 67.4, 5, ‘best’]>

Časovna zahtevnost: te funkcije je O(n), kjer je n skupno število elementov na ugnezdenem seznamu.
Kompleksnost prostora: te funkcije je tudi O(n), saj je za vsak rekurziven klic ustvarjen nov začasni seznam za shranjevanje sploščenega podseznama, končni sploščen seznam pa je shranjen v spremenljivki res.

4. Uporaba metode flatten() za izravnavanje seznama seznamov

Pande flatten() vrne kopijo matrike, strnjene v eno dimenzijo.

Python3




from> pandas.core.common>import> flatten> l>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> print>(>list>(flatten(l)))>

>

>

Izhod:

[1, 3, 'gfg', 4, 5, 6, 'best']>

5. U zapoj verigo() z isinstance() za izravnavo seznama seznamov

To je še en način, na katerega je mogoče opraviti to nalogo. V tem, ki opravimo nalogo iteracije z uporabo veriga() in preverjanje primerkov seznama , ki se izvaja z uporabo isinstance() .

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

>

>

Izhod:

The List after flattening : [‘gfg’, 1, 5, 6, ‘geeks’, 67.4, 5, ‘best’]>

Časovna zahtevnost: O(n)
Pomožni prostor: O(n)

6. Uporaba funkcije reduce() za sploščitev seznama seznamov

The zmanjšati () funkcija je definirana v functools modul. Za dano zaporedje neprekinjeno uporablja funkcijo dveh argumentov in vrne eno samo vrednost.

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>

>

>

pretvori v niz

Izhod:

The List after Flattening : [1, 3, 'gfg', 4, 5, 6, 'best']>

Časovna zahtevnost: O(n)
Pomožni prostor: O(n)

7. Uporaba groupby za poravnavo seznama seznamov

Uvozite groupby modul iz itertools . Definirajte test_list seznamov. Definirajte spremenljivko res kot prazen seznam. Za ponavljanje elementov seznama test_list uporabite ugnezdeno zanko for.

Za vsak element preverite, ali je seznam ali ne. Če je seznam, potem ponovite vsak element seznama in ga dodajte spremenljivki res. Če ni seznam, dodajte element neposredno spremenljivki res.

Natisnite spremenljivko res kot sploščen seznam.

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

>

>

Izhod:

The List after flattening : [1, 3, 'gfg', 4, 5, 6, 'best']>

Časovna zapletenost: Časovna kompleksnost kode je O(n), kjer je n število elementov v vhodnem seznamu. Ugnezdena zanka ponovi vsak element vhodnega seznama natanko enkrat.
Kompleksnost prostora: Prostorska kompleksnost kode je O(n), kjer je n število elementov na vhodnem seznamu. Spremenljivka res se uporablja za shranjevanje sploščenega seznama, ki ima lahko največ n elementov.

8. Uporaba itertools.chain.from_iterable() za poravnavo seznama seznamov

V tem primeru spodnja koda uporablja itertools.chain.from_iterable() metoda za poravnavo ugnezdenega seznama.

Razčlenimo kodo in razložimo: spodnja koda uporablja `itertools.chain.from_iterable()` za izravnavo ugnezdenega seznama (`nested_list`) v en sam seznam (`flattened_list`) in nato natisne rezultat.

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

java hashset

>

>

Izhod:

[1, 2, 3, 4, 5, 6, 7, 8]>

Časovna zahtevnost: O(n)
Pomožni prostor: O(n)

9. Uporaba rekurzije v Izravnajte seznam seznamov

V tem primeru spodnja koda definira funkcijo flatten_list, ki sprejme ugnezdeni seznam kot vhod in vrne sploščen seznam s posameznimi elementi. Sploščenje se doseže z uporabo rekurzija .

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

>

>

Izhod:

[1, 2, 3, 4, 5, 6, 7, 8]>

Časovna zahtevnost: O(n)
Pomožni prostor: O(n)

Zajeli smo skupno 9 načinov za poravnavo seznama seznamov. Sploščenje seznama v Pythonu se uporablja za pretvorbo seznama ugnezdenih seznamov v en sam seznam. Uporabite lahko katero koli od zgornjih metod, da poravnate svoj seznam glede na vaše zahteve.

Podobna branja:

  • Sploščitev povezanega seznama
  • Program Python za sploščitev povezanega seznama
  • Python | Skupinsko izravnavanje seznama