Programa de Python para aplanar la lista anidada a la lista de tuplas

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *