A veces, mientras trabajamos con tuplas de Python, podemos tener un problema en el que necesitamos realizar un aplanamiento de tuplas, que pueden estar anidadas y no deseadas. Esto puede tener aplicación en muchos dominios, como la ciencia de datos y el desarrollo web. Vamos a discutir cierta forma en que se puede realizar esta tarea.
Input : test_tuple = ((4, 7), ((4, 5), ((6, 7), (7, 6)))) Output : ((4, 7), (4, 5), (6, 7), (7, 6)) Input : test_tuple = ((4, 7), (5, 7), (1, 3)) Output : ((4, 7), (5, 7), (1, 3))
Método:recursion + isinstance()
El uso de la combinación de las funcionalidades anteriores puede ayudarnos a lograr una solución a este problema. En esto, usamos la recursividad para realizar la tarea de profundizar en cada tupla en busca de tuplas internas, y para la decisión de aplanamiento, se usa isinstance() según el contenedor de tupla o los datos primitivos.
Python3
# Python3 code to demonstrate working of # Flatten Nested Tuples # Using recursion + isinstance() # helper function def flatten(test_tuple): if isinstance(test_tuple, tuple) and len(test_tuple) == 2 and not isinstance(test_tuple[0], tuple): res = [test_tuple] return tuple(res) res = [] for sub in test_tuple: res += flatten(sub) return tuple(res) # initializing tuple test_tuple = ((4, 5), ((4, 7), (8, 9), (10, 11)), (((9, 10), (3, 4)))) # printing original tuple print("The original tuple : " + str(test_tuple)) # Flatten Nested Tuples # Using recursion + isinstance() res = flatten(test_tuple) # printing result print("The flattened tuple : " + str(res))
The original tuple : ((4, 5), ((4, 7), (8, 9), (10, 11)), ((9, 10), (3, 4))) The flattened tuple : ((4, 5), (4, 7), (8, 9), (10, 11), (9, 10), (3, 4))
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