En aquest article, aprendrem a aplanar una llista de llistes mitjançant la comprensió de llistes a Python.
De vegades, mentre treballem amb una llista de Python, podem tenir un problema en què hem d'aplanar la llista, és a dir, convertir una llista mixta en una altra aplanada. Això pot tenir aplicacions en dominis que utilitzen llistes 1D com a entrada.
Parlem de determinades maneres en què es pot realitzar aquesta tasca.
Exemple:
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.>
Com aplanar la llista a elements individuals a Python
A continuació es mostren els mètodes que tractarem a Com aplanar una llista de llistes a Python:
- Aplanar la llista utilitzant comprensió de llista
- Aplanar la llista utilitzant suma()
- Aplanar la llista utilitzant bucle
- Aplanar la llista utilitzant mètode flatten().
- Aplanar la llista utilitzant cadena () amb és una instància ()
- Aplanar la llista utilitzant reduir () funció
- Aplana la llista utilitzant groupby
- Aplanar la llista utilitzant itertools.chain.from_iterable()
- Aplana la llista amb recursivitat
1. Utilitzar la comprensió de llistes per aplanar una llista de llistes
Aquí, estem utilitzant comprensió de llista per aplanar la llista de 2D a 1D.
Python 3
res>=> [i>for> row>in> [[>1>,>3>,>'geeks'>], [>4>,>5>],> >[>6>,>'best'>]]>for> i>in> row]> print>(res)> |
una altra cosa java
>
>
Sortida:
[1, 3, 'geeks', 4, 5, 6, 'best']>
Complexitat temporal: O(n) on n és el nombre d'elements de la llista
Espai auxiliar: O(n) on n és el nombre d'elements de la llista
2. Utilitzant la funció sum() per aplanar una llista de llistes
Aquí, estem utilitzant el funció suma(). en el qual vam passar test_list com a objecte iterable com a primer paràmetre i el segon paràmetre com a llista buida en la qual emmagatzema l'element.
Python 3
test_list>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> test_list>=> sum>(test_list, [])> print>(test_list)> |
>
>
Sortida:
[1, 3, 'gfg', 4, 5, 6, 'best']>
Complexitat temporal: O(n), on n és la longitud de la llista llista_test.
Espai auxiliar: Es crea O(n) espai addicional de mida n on n és el nombre d'elements de la llista
3. Utilitzant f o Bucle a Aplanar una llista de llistes
La combinació de les funcionalitats anteriors es pot utilitzar per realitzar aquesta tasca. En això, comprovem una instància de la llista i l'aplanem, i la resta d'elements els afegim brutalment a la llista.
Python 3
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))> |
>
>
Sortida:
The List after flattening : [‘gfg’, 1, 5, 6, ‘geeks’, 67.4, 5, ‘best’]>
Complexitat temporal: d'aquesta funció és O(n), on n és el nombre total d'elements de la llista imbricada.
Complexitat espacial: d'aquesta funció també és O(n), ja que es crea una nova llista temporal per a cada trucada recursiva per emmagatzemar la subllista aplanada, i la llista aplanada final s'emmagatzema a la variable res.
4. Utilitzant el mètode flatten() per aplanar una llista de llistes
Pandes flatten() retorna una còpia de la matriu col·lapsada en una dimensió.
Python 3
from> pandas.core.common>import> flatten> l>=> [[>1>,>3>,>'gfg'>], [>4>,>5>], [>6>,>'best'>]]> print>(>list>(flatten(l)))> |
>
>
Sortida:
ipconfig per a ubuntu
[1, 3, 'gfg', 4, 5, 6, 'best']>
5. U sing chain() amb isinstance() per aplanar una llista de llistes
Aquesta és una altra manera de realitzar aquesta tasca. En aquest, quin realitzem la tasca d'iteració utilitzant cadena () i comprovant les instàncies de la llista , que es fa utilitzant és una instància () .
Python 3
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))> |
>
>
Sortida:
The List after flattening : [‘gfg’, 1, 5, 6, ‘geeks’, 67.4, 5, ‘best’]>
Complexitat temporal: O(n)
Espai auxiliar: O(n)
6. Utilitzant la funció reduce() per aplanar una llista de llistes
El reduir () funció es defineix a la functools mòdul. Aplica una funció de dos arguments contínuament a la seqüència donada i retorna un sol valor.
Python 3
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> |
>
>
Sortida:
The List after Flattening : [1, 3, 'gfg', 4, 5, 6, 'best']>
Complexitat temporal: O(n)
Espai auxiliar: O(n)
7. Utilitzar groupby per aplanar una llista de llistes
Importa el agrupar per mòdul de itertools . Definiu una llista_test de llistes. Definiu una variable res com una llista buida. Utilitzeu un bucle for imbricat per iterar sobre els elements de la llista_test.
Per a cada element, comproveu si és una llista o no. Si és una llista, itereu sobre cada element de la llista i afegiu-lo a la variable res. Si no és una llista, afegiu l'element directament a la variable res.
Imprimiu la variable res com a llista aplanada.
Python 3
q2 mesos
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.> |
>
>
Sortida:
The List after flattening : [1, 3, 'gfg', 4, 5, 6, 'best']>
Complexitat temporal: La complexitat temporal del codi és O(n), on n és el nombre d'elements de la llista d'entrada. El bucle imbricat itera sobre cada element de la llista d'entrada exactament una vegada.
Complexitat espacial: La complexitat espacial del codi és O(n), on n és el nombre d'elements de la llista d'entrada. La variable res s'utilitza per emmagatzemar la llista aplanada, que pot tenir com a màxim n elements.
8. Ús de itertools.chain.from_iterable() per aplanar una llista de llistes
En aquest exemple, el codi següent utilitza el itertools.chain.from_iterable() mètode per aplanar una llista imbricada.
Desglossem el codi i expliquem: El codi següent utilitza `itertools.chain.from_iterable()` per aplanar una llista imbricada (`nested_list`) en una única llista (`flattened_list`) i després imprimeix el resultat.
Python 3
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)> |
>
>
Sortida:
[1, 2, 3, 4, 5, 6, 7, 8]>
Complexitat temporal: O(n)
Espai auxiliar: O(n)
9. Utilitzar la recursivitat per Aplanar una llista de llistes
En aquest exemple, el codi següent defineix una funció flatten_list que pren una llista imbricada com a entrada i retorna una llista aplanada amb elements individuals. L'aplanament s'aconsegueix utilitzant recursivitat .
Python 3
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)> |
>
>
Sortida:
[1, 2, 3, 4, 5, 6, 7, 8]>
Complexitat temporal: O(n)
Espai auxiliar: O(n)
Hem cobert 9 maneres totals d'aplanar una llista de llistes. L'aplanament de llistes a Python s'utilitza per convertir una llista de llistes imbricades en una única llista. Podeu utilitzar qualsevol dels mètodes anteriors per aplanar la vostra llista segons els vostres requisits.
com convertir int a string java
Lectures similars:
- Aplanament d'una llista enllaçada
- Programa Python per aplanar una llista enllaçada
- Python | Aplanament agrupat de llista