logo

Python – Litistä luettelo yksittäisiin elementteihin

Tässä artikkelissa opimme litistämään luetteloluetteloa Pythonin luetteloiden ymmärtämisen avulla.

Joskus Python-listan kanssa työskennellessämme voi tulla ongelma, jossa meidän on suoritettava listan litistys eli muunnettava sekalista litistetyksi. Tällä voi olla sovelluksia toimialueissa, jotka käyttävät 1D-luetteloita syötteenä.



Keskustellaan tietyistä tavoista, joilla tämä tehtävä voidaan suorittaa.

Esimerkki:

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

Kuinka litistää luettelo yksittäisiin elementteihin Pythonissa

Alla on menetelmät, joita käsittelemme artikkelissa Pythonin luetteloluettelon litistäminen:



  • Litistä luettelo käyttämällä listan ymmärtäminen
  • Litistä luettelo käyttämällä summa()
  • Litistä luettelo käyttämällä silmukka
  • Litistä luettelo käyttämällä flatten() -menetelmä
  • Litistä luettelo käyttämällä ketju() kanssa isinstance()
  • Litistä luettelo käyttämällä vähentää() toiminto
  • Tasoita luettelo käyttämällä groupbyä
  • Litistä luettelo käyttämällä itertools.chain.from_iterable()
  • Tasoita luettelo rekursiolla

1. Listan ymmärtäminen litistääksesi luettelot

Tässä meillä on käytössä listan ymmärtäminen litistääksesi luettelon 2D:stä 1D:ksi.

Python 3






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

css-tekstin tasaus

>

>

Lähtö:

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

Aika monimutkaisuus: O(n) missä n on luettelon elementtien lukumäärä
Aputila: O(n) missä n on luettelon elementtien lukumäärä

2. Sum()-funktion käyttö litistääksesi listaluettelon

Tässä käytämme summa()-funktio jossa välitimme test_list iteroitavana objektina ensimmäisenä parametrina ja toisen parametrin tyhjänä luettelona, ​​johon se tallentaa elementin.

Python 3




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

>

>

Lähtö:

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

Aika monimutkaisuus: O(n), missä n on listan testi_lista pituus.
Aputila: O(n) luodaan lisätila, jonka koko on n, missä n on listan elementtien lukumäärä

3. Käyttämällä f tai Loop to Litistä luettelo luetteloista

Yllä olevien toimintojen yhdistelmää voidaan käyttää tämän tehtävän suorittamiseen. Tässä tarkistamme luettelon esiintymän ja tasoitamme sen, ja loput elementit lisäämme luetteloon raa'asti.

Python 3




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

>

hasseuraava java
>

Lähtö:

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

Aika monimutkaisuus: Tämän funktion arvo on O(n), missä n on sisäkkäisen luettelon elementtien kokonaismäärä.
Avaruuden monimutkaisuus: Tämän funktion arvo on myös O(n), koska jokaiselle rekursiiviselle kutsulle luodaan uusi listan temp litteän aliluettelon tallentamiseksi, ja lopullinen litteä lista tallennetaan res-muuttujaan.

4. Käytä flatten()-metodia litistääksesi listaluettelon

Pandat flatten() palauttaa kopion taulukosta tiivistettynä yhteen ulottuvuuteen.

Python 3




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

>

>

Lähtö:

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

5. U laula ketju() ja isinstance() litistääksesi luetteloluettelon

Tämä on jälleen yksi tapa, jolla tämä tehtävä voidaan suorittaa. Tässä, joka suoritamme iterointitehtävän käyttämällä ketju() ja tarkistamalla luetteloinstanssit , joka tehdään käyttämällä isinstance() .

Python 3




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

>

>

Lähtö:

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

Aika monimutkaisuus: Päällä)
Aputila: Päällä)

6. Listaluettelon tasoittaminen funktiolla vähennys()

The vähentää() toiminto on määritelty kohdassa toiminnalliset työkalut moduuli. Se soveltaa kahden argumentin funktiota jatkuvasti annettuun sekvenssiin ja palauttaa yhden arvon.

Python 3




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>

>

>

alamerkkijono bashissa

Lähtö:

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

Aika monimutkaisuus: Päällä)
Aputila: Päällä)

7. Groupby:n käyttäminen listaluettelon litistämiseen

Tuo groupby moduuli alkaen itert-työkalut . Määritä luettelojen test_list. Määritä res-muuttuja tyhjäksi listaksi. Käytä sisäkkäistä silmukkaa toistaaksesi test_list-luettelon elementtejä.

Tarkista jokaisen elementin kohdalla, onko se luettelo vai ei. Jos se on luettelo, toista luettelon jokainen elementti ja liitä se res-muuttujaan. Jos se ei ole luettelo, lisää elementti suoraan res-muuttujaan.

Tulosta res-muuttuja litteänä luettelona.

Python 3




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

>

>

Lähtö:

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

Aika monimutkaisuus: Koodin aikamonimutkaisuus on O(n), missä n on syöttöluettelon elementtien lukumäärä. Sisäkkäinen silmukka toistuu syöteluettelon jokaisen elementin yli täsmälleen kerran.
Tilan monimutkaisuus: Koodin tilamonimutkaisuus on O(n), missä n on syöteluettelon elementtien lukumäärä. Res-muuttujaa käytetään litteän listan tallentamiseen, jossa voi olla enintään n elementtiä.

8. Listaluettelon litistäminen käyttämällä itertools.chain.from_iterable()

Tässä esimerkissä alla oleva koodi käyttää itertools.chain.from_iterable() menetelmä litistää sisäkkäinen luettelo.

Puretaan koodi ja selitetään: Alla oleva koodi käyttää 'itertools.chain.from_iterable()'-komentoa litistämään sisäkkäisen luettelon ('nested_list') yhdeksi luetteloksi ('flattened_list') ja tulostaa sitten tuloksen.

Python 3




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

>

>

muuntaa päivämäärä merkkijonoksi

Lähtö:

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

Aika monimutkaisuus: Päällä)
Aputila: Päällä)

9. Rekursion käyttö kohteeseen Litistä luettelo luetteloista

Tässä esimerkissä alla oleva koodi määrittää funktion flatten_list, joka ottaa syötteeksi sisäkkäisen luettelon ja palauttaa litteän luettelon yksittäisillä elementeillä. Tasoitus saadaan aikaan käyttämällä rekursio .

Python 3




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

>

>

Lähtö:

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

Aika monimutkaisuus: Päällä)
Aputila: Päällä)

Olemme käsitelleet yhteensä 9 tapaa litistää luetteloita. Pythonin listan litistystä käytetään sisäkkäisten luetteloiden muuntamiseen yhdeksi luetteloksi. Voit käyttää mitä tahansa yllä olevista tavoista litistääksesi luettelosi tarpeidesi mukaan.

Samanlaisia ​​lukemia:

  • Linkitetyn luettelon tasoittaminen
  • Python-ohjelma linkitetyn luettelon tasoittamiseksi
  • Python | Ryhmitetty Listan tasoitus