logo

Python: appiattisci l'elenco in singoli elementi

In questo articolo impareremo come appiattire un elenco di elenchi tramite la comprensione delle liste in Python.

A volte, mentre lavoriamo con un elenco Python, possiamo avere un problema in cui dobbiamo eseguire l'appiattimento dell'elenco, ovvero convertire un elenco misto in uno appiattito. Ciò può avere applicazioni in domini che utilizzano elenchi 1D come input.



Parliamo di alcuni modi in cui questo compito può essere eseguito.

Esempio:

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

Come appiattire l'elenco in singoli elementi in Python

Di seguito sono riportati i metodi che tratteremo in Come appiattire un elenco di elenchi in Python:



  • Appiattisci elenco utilizzando comprensione delle liste
  • Appiattisci elenco utilizzando somma()
  • Appiattisci elenco utilizzando ciclo continuo
  • Appiattisci elenco utilizzando metodo appiattisci()
  • Appiattisci elenco utilizzando catena() con isistanza()
  • Appiattisci elenco utilizzando ridurre() funzione
  • Appiattisci elenco utilizzando groupby
  • Appiattisci elenco utilizzando itertools.chain.from_iterable()
  • Appiattisci elenco utilizzando la ricorsione

1. Utilizzo della comprensione delle liste per appiattire un elenco di elenchi

Qui stiamo usando comprensione delle liste per appiattire l'elenco da 2D a 1D.

Python3






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

Freddie Mercury

>

>

Produzione:

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

Complessità temporale: O(n) dove n è il numero di elementi nell'elenco
Spazio ausiliario: O(n) dove n è il numero di elementi nell'elenco

2. Utilizzo della funzione sum() per appiattire un elenco di elenchi

Qui stiamo usando il funzione somma() in cui abbiamo passato test_list come oggetto iterabile come primo parametro e il secondo parametro come un elenco vuoto in cui memorizza l'elemento.

Python3




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

>

>

Produzione:

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

Complessità temporale: O(n), dove n è la lunghezza dell'elenco test_list.
Spazio ausiliario: O(n) viene creato uno spazio aggiuntivo di dimensione n dove n è il numero di elementi nell'elenco

3. Utilizzando f o Passa a Appiattire un elenco di elenchi

La combinazione delle funzionalità di cui sopra può essere utilizzata per eseguire questa attività. In questo caso, controlliamo un'istanza dell'elenco e la appiattiamo, mentre il resto degli elementi lo aggiungiamo brutalmente all'elenco.

Python3

Lettore multimediale vlc scarica youtube




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

>

>

Produzione:

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

Complessità temporale: di questa funzione è O(n), dove n è il numero totale di elementi nell'elenco annidato.
Complessità spaziale: di questa funzione è anche O(n), poiché viene creata una nuova lista temporanea per ogni chiamata ricorsiva per memorizzare la sottolista appiattita e l'elenco appiattito finale viene memorizzato nella variabile res.

4. Utilizzo del metodo flatten() per appiattire un elenco di elenchi

Panda flatten() restituisce una copia dell'array compresso in una dimensione.

Python3




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

>

>

Produzione:

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

5. U cantare chain() con isinstance() per appiattire un elenco di elenchi

Questo è ancora un altro modo in cui questo compito può essere eseguito. In questo, Quale eseguiamo il compito di iterazione utilizzando catena() e controllando le istanze dell'elenco , che viene fatto utilizzando isistanza() .

Python3




Alternative a watchcartoononline.io
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))>

>

>

Produzione :

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

Complessità temporale: SU)
Spazio ausiliario: SU)

6. Utilizzo della funzione reduce() per appiattire un elenco di elenchi

IL ridurre() la funzione è definita in funtools modulo. Applica una funzione di due argomenti in modo continuo alla sequenza data e restituisce un singolo valore.

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>

>

>

Produzione:

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

Complessità temporale: SU)
Spazio ausiliario: SU)

7. Utilizzo di groupby per appiattire un elenco di elenchi

Importa il raggruppa per modulo da itertools . Definire un test_list di elenchi. Definire una variabile res come un elenco vuoto. Utilizzare un ciclo for nidificato per scorrere gli elementi di test_list.

Per ogni elemento, controlla se è una lista o meno. Se si tratta di una lista, esegui l'iterazione su ciascun elemento della lista e aggiungilo alla variabile res. Se non è una lista, aggiungi l'elemento direttamente alla variabile res.

Stampa la variabile res come elenco appiattito.

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

>

>

Produzione:

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

Complessità temporale: La complessità temporale del codice è O(n), dove n è il numero di elementi nell'elenco di input. Il ciclo nidificato esegue un'iterazione su ciascun elemento dell'elenco di input esattamente una volta.
Complessità spaziale: La complessità spaziale del codice è O(n), dove n è il numero di elementi nell'elenco di input. La variabile res viene utilizzata per memorizzare l'elenco appiattito, che può avere al massimo n elementi.

8. Utilizzo di itertools.chain.from_iterable() per appiattire un elenco di elenchi

In questo esempio il codice seguente utilizza il file itertools.chain.from_iterable() metodo per appiattire un elenco nidificato.

Analizziamo il codice e spieghiamo: il codice seguente utilizza `itertools.chain.from_iterable()` per appiattire un elenco nidificato (`nested_list`) in un unico elenco (`flattened_list`), quindi stampa il risultato.

Python3


sistema operativo



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

>

>

Produzione :

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

Complessità temporale: SU)
Spazio ausiliario: SU)

9. Usare la ricorsione a Appiattire un elenco di elenchi

In questo esempio il codice seguente definisce una funzione flatten_list che accetta un elenco annidato come input e restituisce un elenco appiattito con singoli elementi. L'appiattimento si ottiene utilizzando ricorsione .

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

>

>

Produzione :

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

Complessità temporale: SU)
Spazio ausiliario: SU)

Abbiamo coperto 9 modi totali per appiattire un elenco di elenchi. L'appiattimento delle liste in Python viene utilizzato per convertire una lista di liste nidificate in una singola lista. Puoi utilizzare uno qualsiasi dei metodi sopra indicati per appiattire l'elenco in base alle tue esigenze.

Letture simili:

  • Appiattimento di un elenco collegato
  • Programma Python per appiattire una lista collegata
  • Pitone | Appiattimento raggruppato dell'elenco