Una guía para aplanar la lista & Lista de listas en Python

Convirtiendo un 2D matriz en un 1D matriz se llama aplastamiento. Hay muchos enfoques para resolver el problema.

Exploraremos algunos de ellos en este tutorial.

Veamos un ejemplo.

Aporte

[[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]

Producción

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

#1. Bucles

La forma más común de resolver el problema es mediante bucles. Creo que la mayoría de ustedes ya lo entendieron. Veamos los pasos para resolver el problema usando bucles.

Inicialice la lista de listas con datos ficticios y asígnele el nombre datos. Ahora, inicialice una lista vacía llamada lista_plana. Iterar sobre el datos. Descomprima todos los elementos de la lista actual. Agrégalos a la lista_plana usando el método de agregar lista. Imprime el resultado.

Vea el código para el problema a continuación.

# initializing the data and an empty list
data = [[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]
flat_list = []

# iterating over the data
for item in data:
    # appending elements to the flat_list
    flat_list += item

# printing the resultantn flat_list
print(flat_list)

Puede usar otro bucle para agregar elementos de sublista a lista_plana en lugar de un operador de concatenación. También podemos usar listas de comprensión en lugar de bucles.

Ambos hacen el mismo trabajo. Veamos la siguiente forma de resolver el problema.

#2. Itertools – Cadena

Usaremos un método llamado cadena desde itertools módulo incorporado.

El método cadena itera sobre cada sublista y devuelve los elementos hasta que no haya sublistas en ella. Devuelve un iterable que tenemos que convertirlo en una lista.

Veamos los pasos involucrados en la solución del problema.

Inicialice la lista de listas con datos ficticios y asígnele el nombre datos. Obtenga el aplanado iterable usando itertools.cadena(*datos). Convierta el iterable resultante en una lista. Imprima la lista plana.

Puede revisar el código en el siguiente fragmento.

# importing the module
import itertools

# initializing the data
data = [[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]

# flattening the list and storing the result
flat_list = itertools.chain(*data)

# converting iterable to list and printing
print(list(flat_list))

#3. Aplanar listas de varios niveles

Hemos visto cómo aplanar una lista de listas. Los métodos anteriores que hemos discutido para aplanar la lista no funcionarán para listas de varios niveles. Veamos un ejemplo.

Aporte

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

Producción

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

Como no conocemos la profundidad de las listas antes del programa, tenemos que usar la recursividad para resolver el problema.

Inicialice los datos como se muestra en el ejemplo y asígneles el nombre datos. Inicializar una lista vacía llamada lista_plana. Escribe una función llamada flatten_list. Iterar sobre los elementos de la lista dada. Si el elemento es una lista, vuelva a llamar recursivamente a la misma función. Si el elemento no es una lista, agregue el elemento al lista_plana. Invocar la función con datos. La función llenará todos los elementos en el lista_plana lista. Imprime el lista_plana para comprobar la salida.

¡Uf! muchos pasos para codificar. No te preocupes. Convertir las declaraciones anteriores en código no llevará más de unos minutos.

# initializing the data and empty list
data = [1, [2, 3, [4, 5]], 6, [[7], [8, 9]]]
flat_list = []

# function
def flatten_list(data):
    # iterating over the data
    for element in data:
        # checking for list
        if type(element) == list:
            # calling the same function with current element as new argument
            flatten_list(element)
        else:
            flat_list.append(element)

# flattening the given list
flatten_list(data)

# printing the flat_list
print(flat_list)

Recuerde, no convertimos la lista existente. En su lugar, hemos creado una nueva lista con el elemento de lista dado.

Conclusión

Espero que hayas disfrutado el tutorial. Puede haber muchas otras formas de aplanar una lista en Python, pero creo que las anteriores son probablemente las más fáciles.

Codificación feliz 🙂

Publicaciones relacionadas

Botón volver arriba