I den här artikeln kommer vi att lära oss hur man plattar ut en lista med listor genom listförståelse i Python.
Ibland, när vi arbetar med en Python-lista, kan vi ha ett problem där vi måste utföra förenkling av listan, dvs konvertera en blandad lista till en tillplattad. Detta kan ha applikationer i domäner som använder 1D-listor som indata.
Låt oss diskutera vissa sätt på vilka denna uppgift kan utföras.
Exempel:
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.>
Hur man plattar ut listan till enskilda element i Python
Nedan är metoderna som vi kommer att täcka i Hur man plattar ut en lista med listor i Python:
- Platta listan med hjälp av listförståelse
- Platta listan med hjälp av belopp()
- Platta listan med hjälp av slinga
- Platta listan med hjälp av flatten() metod
- Platta listan med hjälp av kedja() med isinstance()
- Platta listan med hjälp av minska() fungera
- Platta listan med groupby
- Platta listan med hjälp av itertools.chain.from_iterable()
- Platta listan med hjälp av rekursion
1. Använd listförståelse för att platta till en lista med listor
Här använder vi listförståelse för att platta till listan från 2D till 1D.
Python3
res>=> [i>for> row>in> [[>1>,>3>,>'geeks'>], [>4>,>5>],> >[>6>,>'best'>]]>for> i>in> row]> print>(res)> |
sdlc livscykel
>
>
Produktion:
[1, 3, 'geeks', 4, 5, 6, 'best']>
Tidskomplexitet: O(n) där n är antalet element i listan
Hjälputrymme: O(n) där n är antalet element i listan
2. Använd funktionen sum() för att förenkla en lista med listor
Här använder vi sum() funktion där vi skickade test_list som ett iterbart objekt som den första parametern och den andra parametern som en tom lista där den lagrar 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']>
Tidskomplexitet: O(n), där n är längden på listan test_list.
Hjälputrymme: O(n) ytterligare utrymme av storlek n skapas där n är antalet element i listan
3. Använd f eller Loop till Platta till en lista med listor
Kombinationen av ovanstående funktioner kan användas för att utföra denna uppgift. I det här kontrollerar vi efter en instans av listan och plattar till den, och resten av elementen lägger vi brutalt till i listan.
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’]>
Tidskomplexitet: av denna funktion är O(n), där n är det totala antalet element i den kapslade listan.
Utrymmes komplexitet: av denna funktion är också O(n), eftersom en ny listtemp skapas för varje rekursivt anrop för att lagra den tillplattade underlistan, och den slutliga platta listan lagras i res-variabeln.
4. Använd metoden flatten() för att platta till en lista med listor
Pandas flatten() returnerar en kopia av arrayen kollapsad till en dimension.
Python3
from> pandas.core.common>import> flatten> l>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> print>(>list>(flatten(l)))> |
hur man kopplar ihop beats-hörlurar
>
>
Produktion:
[1, 3, 'gfg', 4, 5, 6, 'best']>
5. U sjung chain() med isinstance() att platta till en lista med listor
Detta är ytterligare ett sätt på vilket denna uppgift kan utföras. I denna, som vi utför uppgiften att iterera med hjälp av kedja() och letar efter listinstanser , som görs med hjälp 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))> |
>
>
Utgång:
The List after flattening : [‘gfg’, 1, 5, 6, ‘geeks’, 67.4, 5, ‘best’]>
Tidskomplexitet: På)
Hjälputrymme: På)
6. Använd reduce()-funktionen för att förenkla en lista med listor
De minska() funktionen definieras i funktionsverktyg modul. Den tillämpar en funktion av två argument kontinuerligt på den givna sekvensen och returnerar ett enda värde.
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> |
>
>
pillista
Produktion:
The List after Flattening : [1, 3, 'gfg', 4, 5, 6, 'best']>
Tidskomplexitet: På)
Hjälputrymme: På)
7. Använd groupby för att platta till en lista med listor
Importera Grupp av modul från itertools . Definiera en testlista med listor. Definiera en res-variabel som en tom lista. Använd en kapslad för-loop för att iterera över elementen i test_list.
För varje element, kontrollera om det är en lista eller inte. Om det är en lista, iterera sedan över varje element i listan och lägg till det i res-variabeln. Om det inte är en lista, lägg till elementet direkt till variabeln res.
Skriv ut res-variabeln som den tillplattade listan.
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']>
Tidskomplexitet: Kodens tidskomplexitet är O(n), där n är antalet element i inmatningslistan. Den kapslade loopen itererar över varje element i inmatningslistan exakt en gång.
Utrymmes komplexitet: Kodens rymdkomplexitet är O(n), där n är antalet element i inmatningslistan. Variabeln res används för att lagra den tillplattade listan, som kan ha högst n element.
8. Använd itertools.chain.from_iterable() för att förenkla en lista med listor
I det här exemplet använder koden nedan itertools.chain.from_iterable() metod för att platta till en kapslad lista.
Låt oss bryta ner koden och förklara: Koden nedan använder `itertools.chain.from_iterable()` för att platta till en kapslad lista (`nested_list`) till en enda lista (`flattened_list`), och skriver sedan 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)> |
>
>
Utgång:
[1, 2, 3, 4, 5, 6, 7, 8]>
Tidskomplexitet: På)
Hjälputrymme: På)
9. Använda rekursion till Platta till en lista med listor
I det här exemplet definierar koden nedan en funktion flatten_list som tar en kapslad lista som indata och returnerar en tillplattad lista med individuella element. Tillplattningen uppnås med hjälp av 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)> |
>
undantagshantering i java
>
Utgång:
[1, 2, 3, 4, 5, 6, 7, 8]>
Tidskomplexitet: På)
Hjälputrymme: På)
Vi har täckt totalt 9 sätt att platta till en lista med listor. Listutjämning i Python används för att konvertera en lista med kapslade listor till en enda lista. Du kan använda någon av ovanstående metoder för att platta till din lista enligt dina krav.
Liknande läsningar:
- Platta ut en länkad lista
- Python-program för att platta till en länkad lista
- Python | Grupperad Tillplattad lista