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