Python: todas las combinaciones de pares de 2 tuplas

A veces, mientras trabajamos con datos de tuplas de Python, podemos tener un problema en el que necesitamos extraer todas las combinaciones posibles de 2 tuplas de argumentos. Este tipo de aplicación puede venir en dominios de ciencia de datos o juegos. Analicemos ciertas formas en que se puede realizar esta tarea.

Entrada : test_tuple1 = (7, 2), test_tuple2 = (7, 8)
Salida : [(7, 7), (7, 8), (2, 7), (2, 8), (7, 7), (7, 2), (8, 7), (8, 2)]

Entrada : test_tuple1 = (9, 2), test_tuple2 = (7, 8)
Salida : [(9, 7), (9, 8), (2, 7), (2, 8), (7, 9), (7, 2), (8, 9), (8, 2)]

Método #1: Uso de la comprensión de listas
Esta es una de las formas en que se puede realizar esta tarea. En esto, realizamos la tarea de formar una combinación de índice en una pasada, en otra pasada cambiamos el índice y lo agregamos a la lista de resultados inicial.

# Python3 code to demonstrate working of 
# All pair combinations of 2 tuples
# Using list comprehension
  
# initializing tuples
test_tuple1 = (4, 5)
test_tuple2 = (7, 8)
  
# printing original tuples
print("The original tuple 1 : " + str(test_tuple1))
print("The original tuple 2 : " + str(test_tuple2))
  
# All pair combinations of 2 tuples
# Using list comprehension
res =  [(a, b) for a in test_tuple1 for b in test_tuple2]
res = res +  [(a, b) for a in test_tuple2 for b in test_tuple1]
  
# printing result 
print("The filtered tuple : " + str(res))
Producción :

The original tuple 1 : (4, 5)
The original tuple 2 : (7, 8)
The filtered tuple : [(4, 7), (4, 8), (5, 7), (5, 8), (7, 4), (7, 5), (8, 4), (8, 5)]

Método #2:chain() + product()
El uso de la combinación de las funciones anteriores proporciona otra forma de resolver este problema. En esto, realizamos la tarea de creación de pares usando product() y chain() se usa para agregar los resultados de product() usado dos veces.

# Python3 code to demonstrate working of 
# All pair combinations of 2 tuples
# Using chain() + product()
from itertools import chain, product
  
# initializing tuples
test_tuple1 = (4, 5)
test_tuple2 = (7, 8)
  
# printing original tuples
print("The original tuple 1 : " + str(test_tuple1))
print("The original tuple 2 : " + str(test_tuple2))
  
# All pair combinations of 2 tuples
# Using chain() + product()
res = list(chain(product(test_tuple1, test_tuple2), product(test_tuple2, test_tuple1)))
  
# printing result 
print("The filtered tuple : " + str(res))
Producción :

The original tuple 1 : (4, 5)
The original tuple 2 : (7, 8)
The filtered tuple : [(4, 7), (4, 8), (5, 7), (5, 8), (7, 4), (7, 5), (8, 4), (8, 5)]

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 *