Aplanar la lista de la lista en Python

Aplanar la lista de la lista en Python
En este artículo, veremos cómo podemos aplanar la lista de la lista de diferentes maneras. Antes de continuar, tenemos que saber la diferencia entre aplanamiento poco profundo y aplanamiento profundo.

Aplanamiento poco profundo: esto significa aplanar la lista a un nivel de profundidad único.

Aplanación profunda: esto significa aplanar la lista a cualquier nivel de profundidad.

Los temas que vamos a discutir en este artículo son los siguientes:

  • Método 1: Usando para bucle
  • Método 2: Uso de una comprensión de la lista
  • Método 3: Uso del método Flatten ()
  • Método 4: Uso del método Deepflatten ()
  • Método 5: Uso de Pandas Flatten
  • Método 6: Uso de Matplotlib Flatten
  • Método 7: Uso del método de Flatten Unipath
  • Método 8: Uso del método SetupTools Flatten
  • Método 9: Uso de IterTools.método de cadena
  • Método 10: Uso del método de Ravel Numpy
  • Método 11: Uso del método de reashape Numpy
  • Método 12: Uso del método Numpy Flatten
  • Método 13: Uso de Numpy.método de concatenado
  • Método 14: Uso del método plano numpy

Método 1: Usando para bucle

En este método, utilizaremos for-loop, que es muy común en cada lenguaje de programación. Iteramos cada elemento en la lista y luego iteramos ese elemento aún más, como se muestra en el programa a continuación.

LST = [[30,7], [8,9], [30,7], [8,9]]
Flatten_List = []
para yo en lst:
Para el artículo en i:
Flatten_List.adjuntar (artículo)
Imprimir ("Lista antes del aplanamiento", LST)
Imprimir ("Lista aplanada:", Flatten_List)

Producción:

Lista antes del aplanamiento [[30, 7], [8, 9], [30, 7], [8, 9]]
Lista aplanada: [30, 7, 8, 9, 30, 7, 8, 9]

Línea 1: Creamos una lista de listas.

Línea 3 a 5: En esta línea, estamos ejecutando un bucle anidado. El exterior para el bucle es para la lista principal, y el bucle interno para los elementos es para los elementos. Si ve este bucle anidado, descubrirá que cada elemento de la lista de subelementos se extrajo y agregó a la nueva lista (Flatten_List). De esta manera, cada elemento en la sublist ahora está separado.

Línea 6 a 7: Estas líneas que muestran la lista original antes y después de aplanar la lista.

Método 2: Uso de la comprensión de la lista

La comprensión de la lista es un método avanzado de lo anterior para el bucle donde escribimos todo en una sola línea.

LST = [[30,7], [8,9], [30,7], [8,9]]
Imprimir ("Lista antes del aplanamiento", LST)
Imprimir ("Lista después del aplanamiento", [Artículo para I en LST para el artículo en i])

Producción:

Lista antes del aplanamiento [[30, 7], [8, 9], [30, 7], [8, 9]]
Lista después del aplanamiento [30, 7, 8, 9, 30, 7, 8, 9]

Línea 1: Creamos una lista de la lista.
Línea 3: Esta línea ejecuta dos bucles en una sola línea para aplanar la lista.

Método 3: Uso del método Flatten ()

Otro método es usar la biblioteca Flatten () como se muestra en el programa que se detalla a continuación. Pero el método Flatten funcionará solo a un nivel de la lista anidada; Si hay listas profundamente anidadas, entonces no aplanará la lista. A continuación se presentan ejemplos de programas anidados y profundamente anidados.

de iteration_utilidades import aplanar
LST = [[30,7], [8,9], [30,7], [8,9]]
Imprimir (Lista (Flatten (LST)))

Producción:

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

Línea 3: Llamamos al método aplanar y pasar la lista a eso como argumento. La salida anterior muestra que nuestra lista de listas ahora está aplanada.

Ahora, vamos a ver una lista profundamente anidada para el método Flatten.

de iteration_utilidades import aplanar
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Imprimir (Lista (Flatten (LST)))

Producción:

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

Línea 2: Creamos una lista anidada y también agregamos otro elemento [[2]] que está profundamente anidado.

Línea 3: Llamamos al método aplanar y pasar la lista a eso como argumento. La salida anterior muestra que no se hace para aplanar la lista profundamente anidada por completo porque el elemento [2] todavía está dentro de una lista.

Método 4: Uso del método Deepflatten ()

El otro método es Deepflatten () que puede aplanar la lista profundamente anidada, que no se realiza por el método Flatten como hemos visto en el ejemplo anterior.

de iteration_utilidades importe Deepflatten
LST = [[30,7], [8,9], [30,7], [8,9], [[200]]]
Imprimir ("List LST antes del aplanamiento", LST)
flatten_lst = list (Deepflatten (LST))
Imprimir ("List LST después del aplanamiento", Flatten_lst)

Producción:

Lista de LST antes del aplanamiento [[30, 7], [8, 9], [30, 7], [8, 9], [[200]]]
Lista de LST después del aplanamiento [30, 7, 8, 9, 30, 7, 8, 9, 200]

Línea 1: Importamos el método Deepflatten.

Línea 4: Llamamos al método profundo y pasamos la lista profundamente anidada a eso como argumento. La salida anterior muestra que nuestra lista profundamente anidada ahora está aplanada.

Método 5: Uso del método Pandas Flatten ()

Este método hace la lista de aplanas incluso si la lista está profundamente anidada.

de pandas.centro.La importación común aplanada
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Imprimir ("Lista antes del aplanamiento", LST)
Imprimir ("Lista aplanada:", Lista (Flatten (LST))))

Producción:

Lista antes del aplanamiento [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Lista aplanada: [30, 7, 8, 9, 30, 7, 8, 9, 2]

Línea 4: Llamamos al método aplanar y pasar la lista profundamente anidada a eso como argumento. La salida anterior muestra que nuestra lista profundamente anidada ahora está aplanada.

Método 6: Uso del método matplotlib flatten ()

Este método hace la lista de aplanas incluso si la lista está profundamente anidada.

de matplotlib.La importación del libro c aplanador
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Imprimir ("Lista antes del aplanamiento", LST)
Imprimir ("Lista aplanada:", Lista (Flatten (LST))))

Producción:

Lista antes del aplanamiento [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Lista aplanada: [30, 7, 8, 9, 30, 7, 8, 9, 2]

Línea 4: Llamamos al método aplanar y pasar la lista profundamente anidada a eso como argumento. La salida anterior muestra que nuestra lista profundamente anidada ahora está aplanada.

Método 7: Uso del método unipath flatten ()

Este método hace la lista de aplanas incluso si la lista está profundamente anidada.

Importar unipath
de unipath.La importación de ruta se aplanar
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Imprimir ("Lista antes del aplanamiento", LST)
Imprimir ("Lista aplanada:", Lista (Flatten (LST))))

Producción:

Lista antes del aplanamiento [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Lista aplanada: [30, 7, 8, 9, 30, 7, 8, 9, 2]

Línea 5: Llamamos al método aplanar y pasar la lista profundamente anidada a eso como argumento. La salida anterior muestra que nuestra lista profundamente anidada ahora está aplanada.

Método 8: Uso del método SetupTools Flatten ()

Este método hace la lista Flatten a solo un nivel.

de setuptools.Los espacios de nombres de importación se aplanan
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Imprimir ("Lista antes del aplanamiento", LST)
Imprimir ("Lista aplanada:", Lista (Flatten (LST))))

Producción:

Lista antes del aplanamiento [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]
Lista aplanada: [30, 7, 8, 9, 30, 7, 8, 9, [2]]

Línea 2: Creamos una lista anidada y también agregamos otro elemento [[2]] que está profundamente anidado.

Línea 4: Llamamos al método aplanar y pasar la lista a eso como argumento. La salida anterior muestra que no se hace para aplanar la lista profundamente anidada por completo porque el elemento [2] todavía está dentro de una lista.

Método 9: Uso de ITerTools.método de cadena

Para desempaquetar la lista de listas, también podemos usar los iTerTools.método de cadena. Este método tiene dos formas de aplanar la lista de listas. Ambos métodos se dan a continuación. Estos métodos también fallan la lista de la lista a un solo nivel.

Usando los IterTools.cadena.De_Iterable

Importar iTertools
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Imprimir ("List LST antes del aplanamiento", LST)
flatten_lst = list ((ITerTools.cadena.from_itorable (lst))))
Imprimir ("List LST después del aplanamiento", Flatten_lst)

Producción:

Lista de LST antes del aplanamiento [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]]
Lista de LST después del aplanamiento [30, 7, 8, 9, 30, 7, 8, 9, [2]]

Línea 2: Creamos una lista anidada y también agregamos otro elemento [[2]] que está profundamente anidado.

Línea 4: Llamamos el método ITerTools.cadena.from_Iterable () y pasar la lista a eso como argumento. La salida anterior muestra que no se hace para aplanar completamente la lista profundamente anidada porque el elemento [2] todavía está dentro de una lista.

Usando el operador *

Importar iTertools
LST = [[30,7], [8,9], [30,7], [8,9], [[2]]]
Imprimir ("List LST antes del aplanamiento", LST)
flatten_lst = list ((ITerTools.cadena (*lst))))
Imprimir ("List LST después del aplanamiento", Flatten_lst)

Producción:

Lista de LST antes del aplanamiento [[30, 7], [8, 9], [30, 7], [8, 9], [[2]]]]
Lista de LST después del aplanamiento [30, 7, 8, 9, 30, 7, 8, 9, [2]]

Método 10: Uso de Numpy.método ravel ()

El otro método es Numpy.Ravel que también aplana la lista anidada. Pero este método se aplana a un nivel de los anidados.

importar numpy como np
LST = NP.Array ([[30,7], [8,9], [30,7], [8,9]])
Flatten_lst = LST.enmarañar()
Imprimir ("Lista antes del aplanamiento", LST)
Imprimir ("Lista aplanada:", Lista (Flatten (LST))))

Producción:

Lista antes del aplanamiento [[30 7]
[8 9]
[30 7]
[8 9]]
Lista aplanada: [30, 7, 8, 9, 30, 7, 8, 9]

Línea 3: Llamamos el método Numpy Ravel. La salida anterior muestra que nuestra matriz de lista anidada ahora está aplanada.

Método 11: Uso del método Numpy ReShape ()

El otro método es Numpy Rephape, que también aplana la lista anidada. Pero este método se aplana a un nivel de los anidados.

importar numpy como np
LST = NP.Array ([[30,7], [8,9], [30,7], [8,9]])
Flatten_lst = LST.remodelar (-1)
Imprimir ("Lista antes del aplanamiento", LST)
Imprimir ("Lista aplanada:", Lista (Flatten (LST))) Lista antes del aplanamiento [[30 7]
[8 9]
[30 7]
[8 9]]
Lista aplanada: [30, 7, 8, 9, 30, 7, 8, 9]

Línea 3: Llamamos el método de reinversión (-1). La salida anterior muestra que nuestra matriz de lista anidada ahora está aplanada.

Método 12: Uso del método Numpy Flatten ()

El otro método es Numpy Flatten (), que también aplana la lista anidada. Pero este método se aplana a un nivel de los anidados.

importar numpy como np
LST = NP.Array ([[30,7], [8,9], [30,7], [8,9]])
Flatten_lst = LST.aplanar()
Imprimir ("Lista antes del aplanamiento", LST)
Imprimir ("Lista aplanada:", Lista (Flatten (LST))))


Producción:

Lista antes del aplanamiento [[30 7]
[8 9]
[30 7]
[8 9]]
Lista aplanada: [30, 7, 8, 9, 30, 7, 8, 9]

Línea 5: Llamamos el método aplanado. La salida anterior muestra que nuestra matriz de lista anidada ahora está aplanada.

Método 13: Uso de Numpy.método concatenate ()

El otro método es Numpy.concatenate (), que también aplana la lista anidada. Pero este método se aplana a un nivel de los anidados.

importar numpy como np
LST = NP.Array ([[30,7], [8,9], [30,7], [8,9]])
flatten_lst = list (np.concatenate (LST))
Imprimir ("Lista antes del aplanamiento", LST)
Imprimir ("Lista aplanada:", Lista (Flatten (LST))))

Producción:

Lista antes del aplanamiento [[30 7]
[8 9]
[30 7]
[8 9]]
Lista aplanada: [30, 7, 8, 9, 30, 7, 8, 9]

Línea 3: Llamamos el método numpy.concatenate () y pase la matriz de la lista anidada en eso como argumento. La salida anterior muestra que nuestra matriz de lista anidada ahora está aplanada.

Método 14: utilizando el método plano numpy

El otro método es Numpy Flat que también aplana la lista anidada. Pero este método se aplana a un nivel de los anidados.

importar numpy como np
LST = NP.Array ([[30,7], [8,9], [30,7], [8,9]])
flatten_lst = list (LST.departamento)
Imprimir ("Lista antes del aplanamiento", LST)
Imprimir ("Lista aplanada:", Lista (Flatten (LST))))

Producción:

Lista antes del aplanamiento [[30 7]
[8 9]
[30 7]
[8 9]]
Lista aplanada: [30, 7, 8, 9, 30, 7, 8, 9]

Línea 3: Llamamos al método plano, y la salida anterior muestra que nuestra matriz de lista anidada ahora está aplanada.

Conclusión:

En este blog, le hemos mostrado diferentes métodos que podemos usar para aplanar nuestra lista de listas. Todos los métodos anteriores funcionan perfectamente para el nivel de la lista anidada. Pero si hay listas profundamente anidadas, algunos de los métodos anteriores funcionan perfectamente. Entonces, depende de usted y, según los requisitos de su programa, qué método desea utilizar.

El código para este artículo también está disponible en el enlace GitHub:
https: // github.com/shekharpandey89/flatten-the-list-of-list