Dada una lista de tuplas con cada tupla envuelta en múltiples listas, nuestra tarea es escribir un programa Python para aplanar el contenedor a una lista de tuplas.
Entrada: lista_prueba = [[[(4, 6)]], [[[(7, 4)]]], [[[[(10, 3)]]]]]
Salida: [(4, 6), (7, 4), (10, 3)]
Explicación: las listas rodeadas se omiten alrededor de cada tupla.
Entrada: lista_prueba = [[[(4, 6)]], [[[(7, 4)]]]]
Salida: [(4, 6), (7, 4)]
Explicación: las listas rodeadas se omiten alrededor de cada tupla.
Método #1: Usar recursividad + isinstance()
En esto, se prueba que la envoltura del contenedor sea una lista usando isinstance(). La estrategia de recursión se utiliza para verificar el aplanamiento repetido de la lista hasta la tupla.
Python3
# Python3 code to demonstrate working of # Multiflatten Tuple List # Using recursion + isinstance() res = [] def remove_lists(test_list): for ele in test_list: # checking for wrapped list if isinstance(ele, list): remove_lists(ele) else: res.append(ele) return res # initializing list test_list = [[[(4, 6)]], [[[(7, 4)]]], [[[[(10, 3)]]]]] # printing original list print("The original list is : " + str(test_list)) # calling recursive function res = remove_lists(test_list) # printing result print("The Flattened container : " + str(res))
Producción:
La lista original es: [[[(4, 6)]], [[[(7, 4)]]], [[[[(10, 3)]]]]]
El contenedor aplanado: [(4, 6), (7, 4), (10, 3)]
Método #2: Usar rendimiento + recursividad
Este método realiza una tarea similar usando recursividad. El generador se usa para procesar resultados intermedios usando la palabra clave yield.
Python3
# Python3 code to demonstrate working of # Multiflatten Tuple List # Using yield + recursion def remove_lists(test_list): if isinstance(test_list, list): # return intermediate to recursive function for ele in test_list: yield from remove_lists(ele) else: yield test_list # initializing list test_list = [[[(4, 6)]], [[[(7, 4)]]], [[[[(10, 3)]]]]] # printing original list print("The original list is : " + str(test_list)) # calling recursive function res = list(remove_lists(test_list)) # printing result print("The Flattened container : " + str(res))
Producción:
La lista original es: [[[(4, 6)]], [[[(7, 4)]]], [[[[(10, 3)]]]]]
El contenedor aplanado: [(4, 6), (7, 4), (10, 3)]
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA