Python | Zip Tupla desigual

En python, comprimir es una utilidad en la que emparejamos un registro con el otro. Por lo general, esta tarea tiene éxito solo en los casos en que los tamaños de ambos registros que se comprimirán son del mismo tamaño. Pero a veces necesitamos que también se compriman registros de diferentes tamaños. Analicemos ciertas formas en que este problema puede resolverse si ocurre.

Método n.º 1: usar el enumerate()bucle +
Esta es la forma en que usamos el método de fuerza bruta para lograr esta tarea en particular. En este proceso, hacemos un bucle en la tupla y, cuando una se vuelve más grande que la otra, hacemos un ciclo de los elementos para comenzar desde el principio.

# Python3 code to demonstrate 
# Zip Uneven Tuple
# using enumerate() + loop
  
# initializing tuples
test_tup1 = (7, 8, 4, 5, 9, 10)
test_tup2 = (1, 5, 6)
  
# printing original tuples
print ("The original tuple 1 is : " + str(test_tup1))
print ("The original tuple 2 is : " + str(test_tup2))
  
# using enumerate() + loop
# Zip Uneven Tuple
res = []
for i, j in enumerate(test_tup1):
    res.append((j, test_tup2[i % len(test_tup2)]))
  
# printing result 
print ("The zipped tuple is : " + str(res))
Producción :

The original tuple 1 is : (7, 8, 4, 5, 9, 10)
The original tuple 2 is : (1, 5, 6)
The zipped tuple is : [(7, 1), (8, 5), (4, 6), (5, 1), (9, 5), (10, 6)]

Método n.º 2: usaritertools.cycle()
Esto es otra forma más de realizar esta tarea en particular, en esta hacemos un ciclo de la tupla más pequeña para que pueda comenzar a comprimirse desde el principio en caso de que la tupla más pequeña se agote usando una función de compresión.

# Python3 code to demonstrate 
# Zip Uneven Tuple
# using itertools.cycle()
from itertools import cycle
  
# initializing tuples
test_tup1 = (7, 8, 4, 5, 9, 10)
test_tup2 = (1, 5, 6)
  
# printing original tuples
print ("The original tuple 1 is : " + str(test_tup1))
print ("The original tuple 2 is : " + str(test_tup2))
  
# using itertools.cycle()
# Zip Uneven Tuple
res = list(zip(test_tup1, cycle(test_tup2)) if len(test_tup1) > len(test_tup2) else zip(cycle(test_tup1), test_tup2))
  
# printing result 
print ("The zipped tuple is : " + str(res))
Producción :

The original tuple 1 is : (7, 8, 4, 5, 9, 10)
The original tuple 2 is : (1, 5, 6)
The zipped tuple is : [(7, 1), (8, 5), (4, 6), (5, 1), (9, 5), (10, 6)]

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 *