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))
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))
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