En este artículo, cubriremos cómo aplanar una lista de listas en python. Para convertir una lista anidada en una lista plana vamos a ver algunos ejemplos.
Ejemplo:
Entrada: l = [1, 2, [3, 4, [5, 6] ], 7, 8, [9, [10] ] ]
Salida: l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]Entrada: l = [[[‘elemento1’, ‘elemento2’]], [[‘elemento3’, ‘elemento4’]]]
Salida: l = [‘artículo1’, ‘artículo2’, ‘artículo3, ‘artículo4”]
¿Qué son las listas anidadas?
Una lista dentro de una lista (o una lista dentro de otra lista anidada). La tarea es convertir una lista anidada en una sola lista en python, es decir, no importa cuántos niveles de anidamiento haya en la lista de python, todos los anidados deben ser eliminado para convertirlo en uno que contenga todos los valores de todas las listas dentro de los corchetes más externos pero sin corchetes adentro.
En este artículo, cubriremos 5 enfoques diferentes para aplanar una lista de listas.
- Usar un bucle anidado
- Usando una lista de comprensión
- usando la recursividad
- Usando un módulo NumPy
- Usando un método sum() incorporado de Python
Ejemplo 1: Convierta una lista anidada en una lista plana usando Nested for Loops
En este ejemplo, veremos que primero estamos iterando la lista externa y luego, si hay una sublista, estamos iterando la sublista usando for loop . Después de eso, agregamos el elemento en nuestra nueva lista «flatList» que nos da una lista plana de 1 dimensión.
Python3
def flat(lis): flatList = [] # Iterate with outer list for element in lis: if type(element) is list: # Check if type is list than iterate through the sublist for item in element: flatList.append(item) else: flatList.append(element) return flatList lis = [[11, 22, 33, 44], [55, 66, 77], [88, 99, 100]] print('List', lis) print('Flat List', flat(lis))
Producción:
List [[11, 22, 33, 44], [55, 66, 77], [88, 99, 100]] Flat List [11, 22, 33, 44, 55, 66, 77, 88, 99, 100]
Ejemplo 2: Uso de una lista de comprensión
En este ejemplo, usaremos la comprensión de lista para iterar la lista primero, y luego iteraremos la sublista usando el bucle for. Después de eso, agregamos el elemento en nuestra nueva lista «flatList» usando una comprensión de lista que nos da una lista plana de 1 dimensión.
Python3
# Original list lis = [[11, 22, 33, 44], [55, 66, 77], [88, 99, 100]] # iterate through the sublist using List comprehension flatList = [element for innerList in lis for element in innerList] # printing original list print('List', lis) # printing flat list print('Flat List', flatList)
Producción:
List [[11, 22, 33, 44], [55, 66, 77], [88, 99, 100]] Flat List [11, 22, 33, 44, 55, 66, 77, 88, 99, 100]
Ejemplo 3: Uso de la recursividad
En este ejemplo, estamos usando el método de recursión para aplanar una lista anidada con múltiples niveles de anidamiento.
Python3
# input list l = [1, 2, [3, 4, [5, 6]], 7, 8, [9, [10]]] # output list output = [] # function used for removing nested # lists in python using recursion def reemovNestings(l): for i in l: if type(i) == list: reemovNestings(i) else: output.append(i) # Driver code print('The original list: ', l) reemovNestings(l) print('The list after removing nesting: ', output)
The original list: [1, 2, [3, 4, [5, 6]], 7, 8, [9, [10]]] The list after removing nesting: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Ejemplo 4: Uso del módulo Pandas
En este ejemplo, estamos usando un módulo pandas, los pandas tienen un método llamado np.concatenate que nos ayuda a aplanar una lista anidada.
Python3
import numpy as np lst = [[11, 33], [22, 55], [11], [77, 88]] new = list(np.concatenate(lst)) print(new)
Producción:
[11, 33, 22, 55, 11, 77, 88]
Ejemplo 5: Uso del método sum() integrado de Python
En este ejemplo, estamos usando un método sum() integrado de python que nos dará una lista plana.
Python3
lis = [[11, 22, 33, 44], [55, 66, 77], [88, 99]] flatList = sum(lis, []) print('New list', flatList)
Producción:
New list [11, 22, 33, 44, 55, 66, 77, 88, 99]
Ejemplo 6: Uso del módulo de funciones de Python
El módulo functools ofrece formas de usar y extender otras funciones y objetos invocables sin tener que reescribirlos por completo.
Python3
import functools import operator # Original list lis = [[11, 22, 33, 44], [55, 66, 77], [88, 99, 100]] flatList = functools.reduce(operator.iconcat, lis, []) # printing original list print('List', lis) # printing flat list print('Flat List', flatList)
Producción:
List [[11, 22, 33, 44], [55, 66, 77], [88, 99, 100]] Flat List [11, 22, 33, 44, 55, 66, 77, 88, 99, 100]
Ejemplo 7: Uso del módulo itertools de Python
Itertool de Python es un módulo que proporciona varias funciones que funcionan en iteradores para producir iteradores complejos.
Python3
import itertools # Original list lis = [[11, 22, 33, 44], [55, 66, 77], [88, 99, 100]] flatList = list(itertools.chain(*lis)) print("Original List:", lis) print("Flattened List:", flatList)
Producción:
List [[11, 22, 33, 44], [55, 66, 77], [88, 99, 100]] Flat List [11, 22, 33, 44, 55, 66, 77, 88, 99, 100]
Publicación traducida automáticamente
Artículo escrito por DharmendraChoudhary y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA