Python | Producto de columna de tupla anidada acumulativa

A veces, mientras trabajamos con registros, podemos tener un problema en el que necesitamos realizar una multiplicación de elementos de tupla según el í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 #1: Usar zip() + expresión de generador anidado 
La combinación de las funciones anteriores se puede usar para realizar la tarea. En esto, combinamos los elementos a través de tuplas usando zip(). Las iteraciones y la lógica del producto son proporcionadas por la expresión del generador.
 

Python3

# Python3 code to demonstrate working of
# Cumulative Nested Tuple Column Product
# 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))
  
# Cumulative Nested Tuple Column Product
# 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 product : " + str(res))
Producción : 

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 product : ((6, 21), (12, 45), (2, 9), (7, 30))

 

 
Método #2: Usando isinstance() + zip() + loop + comprensión de lista 
La combinación de las funciones anteriores se puede usar 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

# Python3 code to demonstrate working of
# Cumulative Nested Tuple Column Product
# using isinstance() + zip() + loop + list comprehension
  
# function to perform task 
def tup_prod(tup1, tup2):
    if isinstance(tup1, (list, tuple)) and isinstance(tup2, (list, tuple)):
        return tuple(tup_prod(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))
  
# Cumulative Nested Tuple Column Product
# using isinstance() + zip() + loop + list comprehension
res = tuple(tup_prod(x, y) for x, y in zip(test_tup1, test_tup2))
  
# printing result
print("The resultant tuple after product : " + str(res))
Producción : 

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 product : ((6, 21), (12, 45), (2, 9), (7, 30))

 

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 *