Python | Segmentación de lista de variables

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))
Producción :

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))
Producción :

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *