logo

Python – Lijst afvlakken tot individuele elementen

In dit artikel leren we hoe je een lijst met lijsten kunt afvlakken door lijstbegrip in Python.

Soms kunnen we tijdens het werken met een Python-lijst een probleem tegenkomen waarbij we de lijst moeten afvlakken, dat wil zeggen een gemengde lijst moeten converteren naar een afgeplatte lijst. Dit kan toepassingen hebben in domeinen die 1D-lijsten als invoer gebruiken.



Laten we bepaalde manieren bespreken waarop deze taak kan worden uitgevoerd.

Voorbeeld:

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

Hoe u de lijst kunt afvlakken tot afzonderlijke elementen in Python

Hieronder staan ​​de methoden die we zullen behandelen in Hoe u een lijst met lijsten in Python kunt afvlakken:



  • Maak lijst plat met behulp van lijst begrip
  • Lijst afvlakken met behulp van som()
  • Maak lijst plat met behulp van lus
  • Maak lijst plat met behulp van flatten() methode
  • Maak lijst plat met behulp van ketting() met isinstance()
  • Maak lijst plat met behulp van verminderen() functie
  • Maak de lijst plat met groupby
  • Maak lijst plat met behulp van itertools.chain.from_iterable()
  • Lijst afvlakken met behulp van recursie

1. Lijstbegrip gebruiken om een ​​lijst met lijsten plat te maken

Hier gebruiken we lijst begrip om de lijst af te vlakken van 2D naar 1D.

Python3






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

q4 maanden

>

>

Uitgang:

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

Tijdcomplexiteit: O(n) waarbij n het aantal elementen in de lijst is
Hulpruimte: O(n) waarbij n het aantal elementen in de lijst is

2. De functie sum() gebruiken om een ​​lijst met lijsten plat te maken

Hier gebruiken we de som() functie waarin we test_list hebben doorgegeven als een itereerbaar object als de eerste parameter en de tweede parameter als een lege lijst waarin het element is opgeslagen.

Python3




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

>

>

Uitgang:

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

Tijdcomplexiteit: O(n), waarbij n de lengte is van de lijst test_list.
Hulpruimte: O(n) er wordt extra ruimte met de grootte n gecreëerd waarbij n het aantal elementen in de lijst is

3. Gebruik f of Loop naar Maak een lijst met lijsten plat

De combinatie van bovenstaande functionaliteiten kan worden gebruikt om deze taak uit te voeren. Hierin controleren we op een exemplaar van de lijst en maken deze plat, en de rest van de elementen voegen we op brute wijze aan de lijst toe.

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

>

>

Uitgang:

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

Tijdcomplexiteit: van deze functie is O(n), waarbij n het totale aantal elementen in de geneste lijst is.
Ruimtecomplexiteit: van deze functie is ook O(n), omdat er voor elke recursieve aanroep om de afgeplatte sublijst op te slaan een nieuwe lijsttemp wordt gemaakt, en de uiteindelijke afgeplatte lijst wordt opgeslagen in de res-variabele.

4. De methode flatten() gebruiken om een ​​lijst met lijsten plat te maken

Panda's flatten() retourneert een kopie van de array samengevouwen in één dimensie.

converteer tekenreeks naar char

Python3




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

>

>

Uitgang:

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

5. U zing chain() met isinstance() om een ​​lijst met lijsten plat te maken

Dit is nog een andere manier waarop deze taak kan worden uitgevoerd. In deze, welke we voeren de taak van iteratie uit met behulp van ketting() en controleren op lijstinstanties , dat wordt gedaan met behulp van 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))>

>

>

Uitgang:

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

Tijdcomplexiteit: Op)
Hulpruimte: Op)

6. Gebruik de functie reduce() om een ​​lijst met lijsten plat te maken

De verminderen() functie is gedefinieerd in de functionele hulpmiddelen module. Het past continu een functie van twee argumenten toe op de gegeven reeks en retourneert een enkele waarde.

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>

>

>

hernoemen in Linux-map

Uitgang:

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

Tijdcomplexiteit: Op)
Hulpruimte: Op)

7. Groupby gebruiken om een ​​lijst met lijsten plat te maken

Importeer de gegroepeerd module van itertools . Definieer een testlijst met lijsten. Definieer een res-variabele als een lege lijst. Gebruik een geneste for-lus om de elementen van de test_list te doorlopen.

Controleer voor elk element of het een lijst is of niet. Als het een lijst is, herhaal dan elk element van de lijst en voeg het toe aan de res-variabele. Als het geen lijst is, voegt u het element rechtstreeks toe aan de res-variabele.

Druk de res-variabele af als de afgeplatte lijst.

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

>

>

Uitgang:

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

Tijdcomplexiteit: De tijdscomplexiteit van de code is O(n), waarbij n het aantal elementen in de invoerlijst is. De geneste lus herhaalt elk element van de invoerlijst precies één keer.
Ruimtecomplexiteit: De ruimtecomplexiteit van de code is O(n), waarbij n het aantal elementen in de invoerlijst is. De res-variabele wordt gebruikt om de afgeplatte lijst op te slaan, die maximaal n elementen kan bevatten.

8. Itertools.chain.from_iterable() gebruiken om een ​​lijst met lijsten plat te maken

In dit voorbeeld gebruikt de onderstaande code de itertools.chain.from_iterable() methode om een ​​geneste lijst af te vlakken.

Laten we de code opsplitsen en uitleggen: De onderstaande code gebruikt `itertools.chain.from_iterable()` om een ​​geneste lijst (`nested_list`) af te vlakken tot een enkele lijst (`flattened_list`), en drukt vervolgens het resultaat af.

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

>

>

Uitgang:

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

Tijdcomplexiteit: Op)
Hulpruimte: Op)

9. Recursie gebruiken naar Maak een lijst met lijsten plat

In dit voorbeeld definieert de onderstaande code een functie flatten_list die een geneste lijst als invoer neemt en een afgevlakte lijst met individuele elementen retourneert. Het afvlakken wordt bereikt met behulp van herhaling .

Python3

javascript




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

>

>

Uitgang:

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

Tijdcomplexiteit: Op)
Hulpruimte: Op)

We hebben in totaal 9 manieren besproken om een ​​lijst met lijsten plat te maken. Lijstafvlakking in Python wordt gebruikt om een ​​lijst met geneste lijsten om te zetten in één enkele lijst. U kunt elk van de bovenstaande methoden gebruiken om uw lijst af te vlakken volgens uw vereisten.

Soortgelijke teksten:

  • Een gekoppelde lijst plat maken
  • Python-programma voor het afvlakken van een gekoppelde lijst
  • Python | Gegroepeerde afvlakking van de lijst