logo

Python: aplanar lista a elementos individuales

En este artículo, aprenderemos cómo aplanar una lista de listas mediante la comprensión de listas en Python.

A veces, mientras trabajamos con una lista de Python, podemos tener un problema en el que necesitamos realizar el aplanamiento de la lista, es decir, convertir una lista mixta en una aplanada. Esto puede tener aplicaciones en dominios que utilizan listas 1D como entrada.



Analicemos ciertas formas en que se puede realizar esta tarea.

Ejemplo:

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

Cómo aplanar la lista a elementos individuales en Python

A continuación se detallan los métodos que cubriremos en Cómo aplanar una lista de listas en Python:



1. Uso de la comprensión de listas para aplanar una lista de listas

Aquí estamos usando comprensión de la lista para aplanar la lista de 2D a 1D.

Python3






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

np.histograma

>

>

Producción:

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

Complejidad del tiempo: O(n) donde n es el número de elementos de la lista
Espacio Auxiliar: O(n) donde n es el número de elementos de la lista

2. Uso de la función sum() para aplanar una lista de listas

Aquí estamos usando el función suma() en el que pasamos test_list como un objeto iterable como primer parámetro y el segundo parámetro como una lista vacía en la que almacena el elemento.

Python3




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

>

>

Producción:

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

Complejidad del tiempo: O(n), donde n es la longitud de la lista test_list.
Espacio Auxiliar: O(n) se crea un espacio adicional de tamaño n donde n es el número de elementos en la lista

conjunto de hash java

3. Usando f o Bucle a Aplanar una lista de listas

La combinación de las funcionalidades anteriores se puede utilizar para realizar esta tarea. En esto, buscamos una instancia de la lista y la aplanamos, y el resto de los elementos los agregamos a la lista de forma bruta.

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

>

>

Producción:

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

Complejidad del tiempo: de esta función es O(n), donde n es el número total de elementos en la lista anidada.
Complejidad espacial: de esta función también es O(n), ya que se crea una nueva lista temporal para cada llamada recursiva para almacenar la sublista aplanada, y la lista aplanada final se almacena en la variable res.

4. Uso del método flatten() para aplanar una lista de listas

pandas flatten() devuelve una copia de la matriz colapsada en una dimensión.

Python3




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

>

>

Producción:

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

5. tu cantar cadena() con isinstance() para aplanar una lista de listas

Esta es otra forma más en la que se puede realizar esta tarea. En esto, cual realizamos la tarea de iteración usando cadena() y comprobar las instancias de la lista , que se hace usando esinstancia() .

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

>

>

Producción :

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

Complejidad del tiempo: En)
Espacio Auxiliar: En)

6. Uso de la función reduce() para aplanar una lista de listas

El reducir() La función está definida en el herramientas funcionales módulo. Aplica una función de dos argumentos continuamente en la secuencia dada y devuelve un valor único.

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>

>

>

Producción:

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

Complejidad del tiempo: En)
Espacio Auxiliar: En)

7. Usar groupby para aplanar una lista de listas

Importar el agrupar por módulo de herramientas iterativas . Defina una lista de pruebas de listas. Defina una variable res como una lista vacía. Utilice un bucle for anidado para iterar sobre los elementos de test_list.

Para cada elemento, verifique si es una lista o no. Si es una lista, repita cada elemento de la lista y agréguelo a la variable res. Si no es una lista, agregue el elemento directamente a la variable res.

Imprima la variable res como la lista aplanada.

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

>

'abc's en números'

>

Producción:

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

Complejidad del tiempo: La complejidad temporal del código es O (n), donde n es el número de elementos en la lista de entrada. El bucle anidado itera sobre cada elemento de la lista de entrada exactamente una vez.
Complejidad espacial: La complejidad espacial del código es O(n), donde n es el número de elementos en la lista de entrada. La variable res se utiliza para almacenar la lista aplanada, que puede tener como máximo n elementos.

8. Uso de itertools.chain.from_iterable() para aplanar una lista de listas

En este ejemplo, el siguiente código utiliza el itertools.chain.from_iterable() Método para aplanar una lista anidada.

Analicemos el código y expliquemos: El siguiente código utiliza `itertools.chain.from_iterable()` para aplanar una lista anidada (`nested_list`) en una sola lista (`flattened_list`), y luego imprime el resultado.

cadena n java

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

>

>

Producción :

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

Complejidad del tiempo: En)
Espacio Auxiliar: En)

9. Usando recursividad para Aplanar una lista de listas

En este ejemplo, el siguiente código define una función flatten_list que toma una lista anidada como entrada y devuelve una lista aplanada con elementos individuales. El aplanamiento se logra utilizando recursividad .

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

>

>

Producción :

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

Complejidad del tiempo: En)
Espacio Auxiliar: En)

Hemos cubierto 9 formas en total de aplanar una lista de listas. El aplanamiento de listas en Python se utiliza para convertir una lista de listas anidadas en una lista única. Puede utilizar cualquiera de los métodos anteriores para aplanar su lista según sus requisitos.

Lecturas similares:

  • Aplanar una lista enlazada
  • Programa Python para aplanar una lista enlazada
  • Pitón | Aplanamiento agrupado de lista