Python | Zip lista de diferentes tamaños

En Python, comprimir es una utilidad en la que emparejamos una lista con la otra. Por lo general, esta tarea tiene éxito solo en los casos en que los tamaños de ambas listas que se van a comprimir son del mismo tamaño. Pero a veces necesitamos que también se compriman listas 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 lista y cuando uno se vuelve más grande que otro, hacemos un ciclo de los elementos para comenzar desde el principio.

# Python3 code to demonstrate 
# zipping of two different size list 
# using enumerate() + loop
  
# initializing lists
test_list1 = [7, 8, 4, 5, 9, 10]
test_list2 = [1, 5, 6]
  
# printing original lists
print ("The original list 1 is : " + str(test_list1))
print ("The original list 2 is : " + str(test_list2))
  
# using enumerate() + loop
# zipping of two different size list 
res = []
for i, j in enumerate(test_list1):
    res.append((j, test_list2[i % len(test_list2)]))
  
# printing result 
print ("The zipped list is : " +  str(res))
Producción:

The original list 1 is : [7, 8, 4, 5, 9, 10]
The original list 2 is : [1, 5, 6]
The zipped list 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 lista más pequeña para que pueda comenzar a comprimirse desde el principio en caso de que la lista más pequeña se agote usando una función de compresión.

# Python3 code to demonstrate 
# zipping of two different size list 
# using itertools.cycle()
from itertools import cycle
  
# initializing lists
test_list1 = [7, 8, 4, 5, 9, 10]
test_list2 = [1, 5, 6]
  
# printing original lists
print ("The original list 1 is : " + str(test_list1))
print ("The original list 2 is : " + str(test_list2))
  
# using itertools.cycle()
# zipping of two different size list 
res = list(zip(test_list1, cycle(test_list2))
            if len(test_list1) > len(test_list2)
            else zip(cycle(test_list1), test_list2))
  
# printing result 
print ("The zipped list is : " +  str(res))
Producción:

The original list 1 is : [7, 8, 4, 5, 9, 10]
The original list 2 is : [1, 5, 6]
The zipped list 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 *