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