Appiattire l'elenco dell'elenco in Python

Appiattire l'elenco dell'elenco in Python
In questo articolo, vedremo come possiamo appiattire l'elenco dell'elenco in modi diversi. Prima di procedere, dobbiamo conoscere la differenza tra appiattimento superficiale e appiattimento profondo.

Appiattimento poco profondo: questo significa appiattire l'elenco a un solo livello di profondità.

Appiattimento profondo: questo significa appiattire l'elenco a qualsiasi livello di profondità.

Gli argomenti di cui discuteremo in questo articolo sono di seguito:

  • Metodo 1: usando per loop
  • Metodo 2: utilizzando una comprensione dell'elenco
  • Metodo 3: utilizzando il metodo flatten ()
  • Metodo 4: utilizzando DeepFlatten () Metodo
  • Metodo 5: usando i panda appiattiti
  • Metodo 6: usando matplotlib appiattire
  • Metodo 7: utilizzando il metodo unipath appiatté
  • Metodo 8: utilizzando il metodo di appiattire setuptools
  • Metodo 9: utilizzando iTertools.Metodo a catena
  • Metodo 10: usando il metodo Numpy Ravel
  • Metodo 11: usando il metodo Numpy Reshape
  • Metodo 12: usando il metodo numpy appiatté
  • Metodo 13: usando numpy.Metodo concatenato
  • Metodo 14: usando il metodo flat numpy

Metodo 1: usando per loop

In questo metodo, useremo per loop, che è molto comune in ogni linguaggio di programmazione. Itegniamo ogni elemento nell'elenco e quindi itechiamo ulteriormente quell'elemento, come mostrato nel programma seguente.

LST = [[30,7], [8,9], [30,7], [8,9]]
fATTEN_LIST = []
per me in lst:
per l'oggetto in I:
flatten_list.append (articolo)
Stampa ("Elenco prima di appiattimento", LST)
Print ("Elenco appiattito:", Flatten_List)

Produzione:

Elenco prima di appiattire [[30, 7], [8, 9], [30, 7], [8, 9]]
Elenco appiattito: [30, 7, 8, 9, 30, 7, 8, 9]

Linea 1: Abbiamo creato un elenco di elenchi.

Riga da 3 a 5: In questa linea, stiamo eseguendo un nidificato per loop. Il loop esterno è per l'elenco principale e il ciclo interno è per gli elementi. Se vedi questo ciclo nidificato, scoprirai che ogni elemento dall'elenco dei sotto-elementi è stato estratto e aggiunto al nuovo elenco (Flatten_List). In questo modo, ogni elemento nella sotto-list è ora separato.

Riga da 6 a 7: Queste righe che mostrano l'elenco originale prima e dopo aver appiattito l'elenco.

Metodo 2: utilizzando la comprensione dell'elenco

La comprensione dell'elenco è un metodo avanzato di quanto sopra per loop in cui scriviamo tutto in una sola riga.

LST = [[30,7], [8,9], [30,7], [8,9]]
Stampa ("Elenco prima di appiattimento", LST)
Stampa ("Elenco dopo appiattimento", [elemento per i in lst per articolo in i])

Produzione:

Elenco prima di appiattire [[30, 7], [8, 9], [30, 7], [8, 9]]
Elenco dopo appiattimento [30, 7, 8, 9, 30, 7, 8, 9]

Linea 1: Abbiamo creato un elenco dell'elenco.
Riga 3: Questa riga che esegue due loop in una singola riga per appiattire l'elenco.

Metodo 3: utilizzando il metodo flatten ()

Un altro metodo è utilizzare la libreria appiattica () come mostrato nel programma indicato di seguito. Ma il metodo appiattito funzionerà solo a un livello dell'elenco nidificato; Se ci sono elenchi profondamente nidificati, non appiattirà l'elenco. Di seguito sono riportati esempi di programmi singoli nidificati e profondamente nidificati.

da iteration_utilities import appiattito
LST = [[30,7], [8,9], [30,7], [8,9]]
Stampa (elenco (appiattine (LST)))

Produzione:

[30, 7, 8, 9, 30, 7, 8, 9]

Riga 3: Chiamiamo il metodo appiattito e passiamo l'elenco in quello come argomento. L'output sopra mostra che il nostro elenco di elenchi è ora appiattito.

Ora, vedremo un elenco profondamente nidificato per il metodo appiattito.

da iteration_utilities import appiattito
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Stampa (elenco (appiattine (LST)))

Produzione:

[30, 7, 8, 9, 30, 7, 8, 9, [2]]

Linea 2: Abbiamo creato un elenco nidificato e aggiunto anche un altro elemento [[2]] che è profondamente nidificato.

Riga 3: Chiamiamo il metodo appiattito e passiamo l'elenco in quello come argomento. L'output sopra mostra che non viene fatto per appiattire completamente l'elenco profondamente nidificato perché l'elemento [2] è ancora all'interno di un elenco.

Metodo 4: usando il metodo DeepFlatten ()

L'altro metodo è il deepflatten () che può appiattire l'elenco profondamente nidificato, che non è fatto con il metodo appiattito come abbiamo visto nell'esempio sopra.

da iteration_utilities import deepflatten
LST = [[30,7], [8,9], [30,7], [8,9], [[200]]]
Stampa ("Elenco LST prima di appiattimento", LST)
flatten_lst = elenco (deepFlatten (LST))
Stampa ("Elenco LST dopo l'appiattimento", flatten_LST)

Produzione:

Elenca LST prima di appiattire [[30, 7], [8, 9], [30, 7], [8, 9], [[200]]]
Elenco LST dopo l'appiattimento [30, 7, 8, 9, 30, 7, 8, 9, 200]

Linea 1: Importiamo il metodo Deepflatten.

Riga 4: Chiamiamo il metodo in profondità e passiamo l'elenco profondamente nidificato in quello come argomento. L'output sopra mostra che la nostra lista profondamente nidificata è ora appiattita.

Metodo 5: usando il metodo Pandas fATTENT ()

Questo metodo fa l'elenco appiattito anche se l'elenco è profondamente nidificato.

da panda.nucleo.Importazione comune appiattire
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Stampa ("Elenco prima di appiattimento", LST)
Stampa ("Elenco appiattito:", elenco (appiattine (LST))

Produzione:

Elenco prima di appiattire [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Elenco appiattito: [30, 7, 8, 9, 30, 7, 8, 9, 2]

Riga 4: Chiamiamo il metodo appiattito e passiamo l'elenco profondamente nidificato in quello come argomento. L'output sopra mostra che la nostra lista profondamente nidificata è ora appiattita.

Metodo 6: Utilizzo del metodo MatplotLib flatten ()

Questo metodo fa l'elenco appiattito anche se l'elenco è profondamente nidificato.

da matplotlib.cbook import appiattito
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Stampa ("Elenco prima di appiattimento", LST)
Stampa ("Elenco appiattito:", elenco (appiattine (LST))

Produzione:

Elenco prima di appiattire [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Elenco appiattito: [30, 7, 8, 9, 30, 7, 8, 9, 2]

Riga 4: Chiamiamo il metodo appiattito e passiamo l'elenco profondamente nidificato in quello come argomento. L'output sopra mostra che la nostra lista profondamente nidificata è ora appiattita.

Metodo 7: utilizzando il metodo unipath fATTtten ()

Questo metodo fa l'elenco appiattito anche se l'elenco è profondamente nidificato.

importare unipath
da Unipath.Importazione del percorso appiattire
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Stampa ("Elenco prima di appiattimento", LST)
Stampa ("Elenco appiattito:", elenco (appiattine (LST))

Produzione:

Elenco prima di appiattire [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Elenco appiattito: [30, 7, 8, 9, 30, 7, 8, 9, 2]

Riga 5: Chiamiamo il metodo appiattito e passiamo l'elenco profondamente nidificato in quello come argomento. L'output sopra mostra che la nostra lista profondamente nidificata è ora appiattita.

Metodo 8: utilizzando il metodo di setUptOols fATTENT ()

Questo metodo fa l'elenco appiattito a un solo livello.

da setuptools.Gli spazi dei nomi importano appiattiti
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Stampa ("Elenco prima di appiattimento", LST)
Stampa ("Elenco appiattito:", elenco (appiattine (LST))

Produzione:

Elenco prima di appiattire [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Elenco appiattito: [30, 7, 8, 9, 30, 7, 8, 9, [2]]

Linea 2: Abbiamo creato un elenco nidificato e aggiunto anche un altro elemento [[2]] che è profondamente nidificato.

Riga 4: Chiamiamo il metodo appiattito e passiamo l'elenco in quello come argomento. L'output sopra mostra che non viene fatto per appiattire completamente l'elenco profondamente nidificato perché l'elemento [2] è ancora all'interno di un elenco.

Metodo 9: usando iTertools.Metodo a catena

Per disimballare l'elenco degli elenchi, possiamo anche usare l'ITertools.Metodo a catena. Questo metodo ha inoltre due modi per appiattire l'elenco degli elenchi. Entrambi i metodi sono riportati di seguito. Questi metodi hanno anche fallito l'elenco dell'elenco a un solo livello.

Usando gli ITTeTools.catena.da_iterable

Importa iTtools
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Stampa ("Elenco LST prima di appiattimento", LST)
Flatten_lst = elenco ((iTerTools.catena.da_iterable (lst)))
Stampa ("Elenco LST dopo l'appiattimento", flatten_LST)

Produzione:

Elenca LST prima di appiattire [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Elenca LST dopo l'appiattimento [30, 7, 8, 9, 30, 7, 8, 9, [2]]

Linea 2: Abbiamo creato un elenco nidificato e aggiunto anche un altro elemento [[2]] che è profondamente nidificato.

Riga 4: Chiamiamo il metodo iTertools.catena.da_iterable () e passare l'elenco in quello come argomento. L'output sopra mostra che non viene fatto per appiattire completamente l'elenco profondamente nidificato perché l'elemento [2] è ancora all'interno di un elenco.

Usando l'operatore *

Importa iTtools
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Stampa ("Elenco LST prima di appiattimento", LST)
Flatten_lst = elenco ((iTerTools.catena (*lst)))
Stampa ("Elenco LST dopo l'appiattimento", flatten_LST)

Produzione:

Elenca LST prima di appiattire [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Elenca LST dopo l'appiattimento [30, 7, 8, 9, 30, 7, 8, 9, [2]]

Metodo 10: usando numpy.Metodo Ravel ()

L'altro metodo è numpy.Ravel che appiattisce anche l'elenco nidificato. Ma questo metodo si appiattisce a un livello nidificato.

Importa Numpy come NP
lst = np.Array ([[30,7], [8,9], [30,7], [8,9]])
flatten_lst = lst.Ravel ()
Stampa ("Elenco prima di appiattimento", LST)
Stampa ("Elenco appiattito:", elenco (appiattine (LST))

Produzione:

Elenco prima di appiattire [[30 7]
[8 9]
[30 7]
[8 9]]
Elenco appiattito: [30, 7, 8, 9, 30, 7, 8, 9]

Riga 3: Chiamiamo il metodo Numpy Ravel. L'output sopra mostra che il nostro array di elenchi nidificati è ora appiattito.

Metodo 11: usando il metodo Numpy Reshape ()

L'altro metodo è Numpy Reshape, che appiattisce anche l'elenco nidificato. Ma questo metodo si appiattisce a un livello nidificato.

Importa Numpy come NP
lst = np.Array ([[30,7], [8,9], [30,7], [8,9]])
flatten_lst = lst.Reshape (-1)
Stampa ("Elenco prima di appiattimento", LST)
Print ("Elenco appiattito:", elenco (appiattire (LST))) Elenco prima di appiattire [[30 7]
[8 9]
[30 7]
[8 9]]
Elenco appiattito: [30, 7, 8, 9, 30, 7, 8, 9]

Riga 3: Chiamiamo il metodo Reshape (-1). L'output sopra mostra che il nostro array di elenchi nidificati è ora appiattito.

Metodo 12: utilizzando il metodo Numpy Fratten ()

L'altro metodo è numpy appiatten (), che appiattisce anche l'elenco nidificato. Ma questo metodo si appiattisce a un livello nidificato.

Importa Numpy come NP
lst = np.Array ([[30,7], [8,9], [30,7], [8,9]])
flatten_lst = lst.appiattire()
Stampa ("Elenco prima di appiattimento", LST)
Stampa ("Elenco appiattito:", elenco (appiattine (LST))


Produzione:

Elenco prima di appiattire [[30 7]
[8 9]
[30 7]
[8 9]]
Elenco appiattito: [30, 7, 8, 9, 30, 7, 8, 9]

Riga 5: Chiamiamo appiattire il metodo. L'output sopra mostra che il nostro array di elenchi nidificati è ora appiattito.

Metodo 13: usando numpy.Metodo Concatenate ()

L'altro metodo è numpy.Concatenate (), che appiattisce anche l'elenco nidificato. Ma questo metodo si appiattisce a un livello nidificato.

Importa Numpy come NP
lst = np.Array ([[30,7], [8,9], [30,7], [8,9]])
Flatten_lst = elenco (NP.concatenata (LST))
Stampa ("Elenco prima di appiattimento", LST)
Stampa ("Elenco appiattito:", elenco (appiattine (LST))

Produzione:

Elenco prima di appiattire [[30 7]
[8 9]
[30 7]
[8 9]]
Elenco appiattito: [30, 7, 8, 9, 30, 7, 8, 9]

Riga 3: Chiamiamo il metodo numpy.Concatenate () e trasmetti l'array di elenco nidificato in quello come argomento. L'output sopra mostra che il nostro array di elenchi nidificati è ora appiattito.

Metodo 14: usando il metodo flat numpy

L'altro metodo è Numpy Flat che appiattisce anche l'elenco nidificato. Ma questo metodo si appiattisce a un livello nidificato.

Importa Numpy come NP
lst = np.Array ([[30,7], [8,9], [30,7], [8,9]])
Flatten_lst = elenco (LST.Piatto)
Stampa ("Elenco prima di appiattimento", LST)
Stampa ("Elenco appiattito:", elenco (appiattine (LST))

Produzione:

Elenco prima di appiattire [[30 7]
[8 9]
[30 7]
[8 9]]
Elenco appiattito: [30, 7, 8, 9, 30, 7, 8, 9]

Riga 3: Chiamiamo il metodo piatto e l'output sopra mostra che il nostro array di elenchi nidificati è ora appiattito.

Conclusione:

In questo blog, ti abbiamo mostrato diversi metodi che possiamo usare per appiattire la nostra lista di elenchi. Tutti i metodi di cui sopra funzionano perfettamente per l'unico livello dell'elenco nidificato. Ma se ci sono elenchi profondamente nidificati, alcuni dei metodi di cui sopra funzionano perfettamente. Quindi, dipende da te e, secondo i requisiti del tuo programma quale metodo desideri utilizzare.

Il codice per questo articolo è disponibile anche sul collegamento GitHub:
https: // github.com/shekharpandey89/appiattire la lista di lista