El problema de rebanar una lista se trató anteriormente, pero a veces necesitamos realizar el rebanado en longitudes variables de acuerdo con la entrada dada en otra lista. Este problema tiene su aplicación potencial en el desarrollo web. Vamos a discutir ciertas formas en que esto se puede hacer.
Método n.º 1: usar itertools.islice()
+ comprensión de
lista La comprensión de lista se puede usar para iterar a través de la lista y el problema del componente se resuelve con la función islice.
# Python3 code to demonstrate # variable length slicing # using itertools.islice() + list comprehension from itertools import islice # initializing test list test_list = [1, 5, 3, 7, 8, 10, 11, 16, 9, 12] # initializing slice list slice_list = [2, 1, 3, 4] # printing original list print("The original list : " + str(test_list)) # printing slice list print("The slice list : " + str(slice_list)) # using itertools.islice() + list comprehension # variable length slicing temp = iter(test_list) res = [list(islice(temp, part)) for part in slice_list] # print result print("The variable sliced list is : " + str(res))
The original list : [1, 5, 3, 7, 8, 10, 11, 16, 9, 12] The slice list : [2, 1, 3, 4] The variable sliced list is : [[1, 5], [3], [7, 8, 10], [11, 16, 9, 12]]
Método n.º 2: Uso de la segmentación de zip() + accumulate()
lista +
Además de utilizar la comprensión de lista para realizar la tarea de enlace, este método utiliza la función zip para mantener unido el elemento de la sublista, la función de acumulación une los elementos y la segmentación se utiliza para construir la segmentación necesaria.
# Python3 code to demonstrate # variable length slicing # using zip() + accumulate() + list slicing from itertools import accumulate # initializing test list test_list = [1, 5, 3, 7, 8, 10, 11, 16, 9, 12] # initializing slice list slice_list = [2, 1, 3, 4] # printing original list print("The original list : " + str(test_list)) # printing slice list print("The slice list : " + str(slice_list)) # using zip() + accumulate() + list slicing # variable length slicing res = [test_list[i - j: i] for i, j in zip(accumulate(slice_list), slice_list)] # print result print("The variable sliced list is : " + str(res))
The original list : [1, 5, 3, 7, 8, 10, 11, 16, 9, 12] The slice list : [2, 1, 3, 4] The variable sliced list is : [[1, 5], [3], [7, 8, 10], [11, 16, 9, 12]]
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