logo

Python – Flat liste til individuelle elementer

I denne artikkelen vil vi lære hvordan du flater ut en liste over lister gjennom listeforståelse i Python.

Noen ganger, mens vi jobber med en Python-liste, kan vi ha et problem der vi må utføre utflating av listen, dvs. konvertere en blandet liste til en sammenflatet liste. Dette kan ha applikasjoner i domener som bruker 1D-lister som input.



La oss diskutere visse måter denne oppgaven kan utføres på.

Eksempel:

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

Hvordan flate ut listen til individuelle elementer i Python

Nedenfor er metodene som vi vil dekke i Hvordan flate ut en liste over lister i Python:



  • Flate List ved hjelp av listeforståelse
  • Flate List ved hjelp av sum()
  • Flate List ved hjelp av Løkke
  • Flate List ved hjelp av flatten() metode
  • Flate List ved hjelp av kjede() med isinstance()
  • Flate List ved hjelp av redusere() funksjon
  • Flat ut liste ved å bruke groupby
  • Flate List ved hjelp av itertools.chain.from_iterable()
  • Flat listen ved hjelp av rekursjon

1. Bruke listeforståelse til å flate ut en liste over lister

Her bruker vi listeforståelse for å flate ut listen fra 2D til 1D.

Python3






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

js erstatning

>

>

Produksjon:

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

Tidskompleksitet: O(n) hvor n er antall elementer i listen
Hjelpeplass: O(n) hvor n er antall elementer i listen

2. Bruk sum()-funksjonen til å flate ut en liste med lister

Her bruker vi sum() funksjon der vi sendte test_list som et iterbart objekt som den første parameteren og den andre parameteren som en tom liste der den lagrer elementet.

Python3




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

>

>

Produksjon:

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

Tidskompleksitet: O(n), hvor n er lengden på listen test_list.
Hjelpeplass: O(n) ekstra plass av størrelse n opprettes der n er antall elementer i listen

3. Ved å bruke f eller Løkke til Flat en liste over lister

Kombinasjonen av funksjonene ovenfor kan brukes til å utføre denne oppgaven. I dette ser vi etter en forekomst av listen og flater den sammen, og resten av elementene legger vi brutalt til listen.

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

>

>

Produksjon:

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

Tidskompleksitet: av denne funksjonen er O(n), der n er det totale antallet elementer i den nestede listen.
Plass kompleksitet: av denne funksjonen er også O(n), ettersom en ny listetemp opprettes for hvert rekursivt kall for å lagre den flate underlisten, og den endelige flatelisten lagres i res-variabelen.

4. Bruke flatten()-metoden for å flate ut en liste over lister

Pandaer flatten() returnerer en kopi av matrisen sammenslått til én dimensjon.

Python3




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

>

>

Produksjon:

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

5. U syng kjede() med isinstance() å flate ut en liste over lister

Dette er nok en måte denne oppgaven kan utføres på. I dette, hvilken vi utfører oppgaven med iterasjon ved hjelp av kjede() og se etter listeforekomster , som gjøres ved hjelp av isinstance() .

Python3


f filmer



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

>

>

Utgang:

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

Tidskompleksitet: På)
Hjelpeplass: På)

6. Bruk reduce()-funksjonen for å flate ut en liste over lister

De redusere() funksjonen er definert i funksjonsverktøy modul. Den bruker en funksjon av to argumenter kontinuerlig på den gitte sekvensen og returnerer en enkelt verdi.

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>

>

>

dele strenger c++

Produksjon:

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

Tidskompleksitet: På)
Hjelpeplass: På)

7. Bruk groupby til å flate ut en liste over lister

Importer gruppe av modul fra itertools . Definer en testliste med lister. Definer en res-variabel som en tom liste. Bruk en nestet for-løkke for å iterere over elementene i test_list.

For hvert element, sjekk om det er en liste eller ikke. Hvis det er en liste, iterer du over hvert element i listen og legg det til res-variabelen. Hvis det ikke er en liste, legg elementet direkte til res-variabelen.

Skriv ut res-variabelen som den flate listen.

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

>

>

Produksjon:

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

Tidskompleksitet: Tidskompleksiteten til koden er O(n), der n er antall elementer i inndatalisten. Den nestede løkken itererer over hvert element i inndatalisten nøyaktig én gang.
Plass kompleksitet: Romkompleksiteten til koden er O(n), der n er antall elementer i inndatalisten. Res-variabelen brukes til å lagre den flate listen, som kan ha maksimalt n elementer.

konverter heltall til streng java

8. Bruke itertools.chain.from_iterable() for å flate ut en liste over lister

I dette eksemplet bruker koden nedenfor itertools.chain.from_iterable() metode for å flate ut en nestet liste.

La oss bryte ned koden og forklare: Koden nedenfor bruker `itertools.chain.from_iterable()` for å flate ut en nestet liste (`nested_list`) til en enkelt liste (`flattened_list`), og skriver deretter ut resultatet.

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

>

>

Utgang:

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

Tidskompleksitet: På)
Hjelpeplass: På)

9. Bruke rekursjon til Flat en liste over lister

I dette eksemplet definerer koden nedenfor en funksjon flatten_list som tar en nestet liste som input og returnerer en flattened liste med individuelle elementer. Utflatingen oppnås ved hjelp av rekursjon .

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

>

>

Utgang:

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

Tidskompleksitet: På)
Hjelpeplass: På)

Vi har dekket totalt 9 måter å flate ut en liste over lister. Listeflating i Python brukes til å konvertere en liste med nestede lister til en enkelt liste. Du kan bruke hvilken som helst av metodene ovenfor for å flate ut listen i henhold til dine krav.

Lignende lesninger:

  • Flate ut en koblet liste
  • Python-program for å flate ut en koblet liste
  • Python | Gruppert Utflating av liste