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:

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

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




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>

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.

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