I denne artikel vil vi lære, hvordan man udjævner en liste over lister gennem listeforståelse i Python.
Nogle gange, mens vi arbejder med en Python-liste, kan vi have et problem, hvor vi skal udføre fladning af listen, dvs. konvertere en blandet liste til en fladtrykt. Dette kan have applikationer i domæner, der bruger 1D-lister som input.
Lad os diskutere visse måder, hvorpå denne opgave kan udføres.
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.>
Sådan udglatter du listen til individuelle elementer i Python
Nedenfor er de metoder, som vi vil dække i Sådan udglatter du en liste over lister i Python:
- Flad Liste ved hjælp af listeforståelse
- Flad Liste ved hjælp af sum()
- Flad Liste ved hjælp af sløjfe
- Flad Liste ved hjælp af flatten() metode
- Flad Liste ved hjælp af kæde() med isinstance()
- Flad Liste ved hjælp af reducere() fungere
- Flad listen ved hjælp af groupby
- Flad Liste ved hjælp af itertools.chain.from_iterable()
- Flad listen ved hjælp af rekursion
1. Brug af listeforståelse til at udjævne en liste over lister
Her bruger vi listeforståelse for at udjævne 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 udskiftning
>
>
Produktion:
[1, 3, 'geeks', 4, 5, 6, 'best']>
Tidskompleksitet: O(n) hvor n er antallet af elementer på listen
Hjælpeplads: O(n) hvor n er antallet af elementer på listen
2. Brug sum()-funktionen til at udjævne en liste over lister
Her bruger vi sum() funktion hvori vi bestod test_list som et iterbart objekt som den første parameter og den anden parameter som en tom liste, hvori den gemmer elementet.
Python3
test_list>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> test_list>=> sum>(test_list, [])> print>(test_list)> |
>
>
Produktion:
[1, 3, 'gfg', 4, 5, 6, 'best']>
Tidskompleksitet: O(n), hvor n er længden af listen test_list.
Hjælpeplads: O(n) yderligere rum af størrelse n oprettes, hvor n er antallet af elementer på listen
3. Brug f eller Loop til Udjævn en liste over lister
Kombinationen af ovenstående funktioner kan bruges til at udføre denne opgave. I dette tjekker vi for en forekomst af listen og udflader den, og resten af elementerne tilføjer 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))> |
>
>
Produktion:
The List after flattening : [‘gfg’, 1, 5, 6, ‘geeks’, 67.4, 5, ‘best’]>
Tidskompleksitet: af denne funktion er O(n), hvor n er det samlede antal elementer i den indlejrede liste.
Rumkompleksitet: af denne funktion er også O(n), da der oprettes en ny listetemp for hvert rekursivt kald for at gemme den fladtrykte underliste, og den endelige fladtrykte liste gemmes i res-variablen.
4. Brug af flatten()-metoden til at udglatte en liste over lister
Pandaer flatten() returnerer en kopi af arrayet sammenklappet til én dimension.
Python3
from> pandas.core.common>import> flatten> l>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> print>(>list>(flatten(l)))> |
>
>
Produktion:
[1, 3, 'gfg', 4, 5, 6, 'best']>
5. U syng kæde() med isinstance() at udjævne en Liste over Lister
Dette er endnu en måde, hvorpå denne opgave kan udføres. Heri, hvilken vi udfører opgaven med iteration vha kæde() og tjek for listeforekomster , som gøres vha isinstance() .
Python3
f film
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))> |
>
>
Output:
The List after flattening : [‘gfg’, 1, 5, 6, ‘geeks’, 67.4, 5, ‘best’]>
Tidskompleksitet: På)
Hjælpeplads: På)
6. Brug reduce()-funktionen til at udjævne en liste over lister
Det reducere() funktion er defineret i funktionsværktøjer modul. Den anvender en funktion af to argumenter kontinuerligt på den givne sekvens og returnerer en enkelt værdi.
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> |
>
>
Java eksempel programmer
Produktion:
The List after Flattening : [1, 3, 'gfg', 4, 5, 6, 'best']>
Tidskompleksitet: På)
Hjælpeplads: På)
7. Brug groupby til at udjævne en liste over lister
Importer gruppeby modul fra itertools . Definer en test_liste over lister. Definer en res-variabel som en tom liste. Brug en indlejret for-løkke til at iterere over elementerne i test_list.
For hvert element skal du kontrollere, om det er en liste eller ej. Hvis det er en liste, så gentag over hvert element på listen og føj det til res-variablen. Hvis det ikke er en liste, skal du tilføje elementet direkte til variablen res.
Udskriv res-variablen som den fladtrykte liste.
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.> |
>
>
Produktion:
The List after flattening : [1, 3, 'gfg', 4, 5, 6, 'best']>
Tidskompleksitet: Kodens tidskompleksitet er O(n), hvor n er antallet af elementer i inputlisten. Den indlejrede sløjfe gentager hvert element i inputlisten nøjagtig én gang.
Rumkompleksitet: Kodens rumkompleksitet er O(n), hvor n er antallet af elementer i inputlisten. Res-variablen bruges til at gemme den fladtrykte liste, som højst kan have n elementer.
netværk og netværkstyper
8. Brug af itertools.chain.from_iterable() til at udjævne en liste over lister
I dette eksempel bruger nedenstående kode itertools.chain.from_iterable() metode til at udjævne en indlejret liste.
Lad os nedbryde koden og forklare: Nedenstående kode bruger `itertools.chain.from_iterable()` til at fladte en indlejret liste (`nested_list`) til en enkelt liste (`flattened_list`), og udskriver derefter 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)> |
>
>
Output:
[1, 2, 3, 4, 5, 6, 7, 8]>
Tidskompleksitet: På)
Hjælpeplads: På)
9. Brug af rekursion til Udjævn en liste over lister
I dette eksempel definerer nedenstående kode en funktion flatten_list, der tager en indlejret liste som input og returnerer en fladtrykt liste med individuelle elementer. Udfladningen opnås vha rekursion .
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)> |
>
>
Output:
[1, 2, 3, 4, 5, 6, 7, 8]>
Tidskompleksitet: På)
Hjælpeplads: På)
Vi har dækket 9 i alt måder at udjævne en liste over lister. Listefladning i Python bruges til at konvertere en liste over indlejrede lister til en enkelt liste. Du kan bruge en af ovenstående metoder til at udjævne din liste i henhold til dine krav.
Lignende læsninger:
- Udfladning af en sammenkædet liste
- Python-program til udfladning af en sammenkædet liste
- Python | Grupperet udfladning af liste