A veces, mientras trabajamos con registros, podemos tener un problema en el que necesitamos realizar la adición de elementos de tupla en forma de índice. Esto puede complicarse con los elementos de tupla para que sean tupla y los elementos internos vuelvan a ser tupla. Analicemos ciertas formas en que se puede resolver este problema.
Método n. ° 1: usar zip()
+ expresión de generador anidado
La combinación de las funciones anteriores se puede utilizar para realizar la tarea. En esto, combinamos los elementos a través de tuplas usando zip()
. La lógica de iteraciones y sumatorias la proporciona la expresión del generador.
# Python3 code to demonstrate working of # Addition in nested tuples # using zip() + nested generator expression # initialize tuples test_tup1 = ((1, 3), (4, 5), (2, 9), (1, 10)) test_tup2 = ((6, 7), (3, 9), (1, 1), (7, 3)) # printing original tuples print("The original tuple 1 : " + str(test_tup1)) print("The original tuple 2 : " + str(test_tup2)) # Addition in nested tuples # using zip() + nested generator expression res = tuple(tuple(a + b for a, b in zip(tup1, tup2))\ for tup1, tup2 in zip(test_tup1, test_tup2)) # printing result print("The resultant tuple after summation : " + str(res))
The original tuple 1 : ((1, 3), (4, 5), (2, 9), (1, 10)) The original tuple 2 : ((6, 7), (3, 9), (1, 1), (7, 3)) The resultant tuple after summation : ((7, 10), (7, 14), (3, 10), (8, 13))
Método n.º 2: uso de isinstance() + zip()
+ bucle + comprensión de lista
La combinación de las funciones anteriores se puede utilizar para realizar esta tarea en particular. En esto, verificamos el tipo de anidamiento y realizamos la recursividad. Este método puede dar flexibilidad de anidamiento de más de 1 nivel.
# Python3 code to demonstrate working of # Addition in nested tuples # using isinstance() + zip() + loop + list comprehension # function to perform task def tup_sum(tup1, tup2): if isinstance(tup1, (list, tuple)) and isinstance(tup2, (list, tuple)): return tuple(tup_sum(x, y) for x, y in zip(tup1, tup2)) return tup1 + tup2 # initialize tuples test_tup1 = ((1, 3), (4, 5), (2, 9), (1, 10)) test_tup2 = ((6, 7), (3, 9), (1, 1), (7, 3)) # printing original tuples print("The original tuple 1 : " + str(test_tup1)) print("The original tuple 2 : " + str(test_tup2)) # Addition in nested tuples # using isinstance() + zip() + loop + list comprehension res = tuple(tup_sum(x, y) for x, y in zip(test_tup1, test_tup2)) # printing result print("The resultant tuple after summation : " + str(res))
The original tuple 1 : ((1, 3), (4, 5), (2, 9), (1, 10)) The original tuple 2 : ((6, 7), (3, 9), (1, 1), (7, 3)) The resultant tuple after summation : ((7, 10), (7, 14), (3, 10), (8, 13))
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