Python | Dividir una lista en sublistas de longitudes dadas

El problema de dividir una lista en sublistas es bastante genérico, pero dividir en sublistas de longitud dada no es tan común. Dada una lista de listas y una lista de longitud, la tarea es dividir la lista en sublistas de longitud dada.

Ejemplo:

Input : Input = [1, 2, 3, 4, 5, 6, 7]
        length_to_split = [2, 1, 3, 1]

Output: [[1, 2], [3], [4, 5, 6], [7]]

Método n. ° 1: usar islicepara dividir una lista en sublistas de longitud determinada es la forma más elegante.

# Python code to split a list
# into sublists of given length.
  
from itertools import islice
  
# Input list initialization
Input = [1, 2, 3, 4, 5, 6, 7]
  
# list of length in which we have to split
length_to_split = [2, 1, 3, 1]
  
# Using islice
Inputt = iter(Input)
Output = [list(islice(Inputt, elem))
          for elem in length_to_split]
  
# Printing Output
print("Initial list is:", Input)
print("Split length list: ", length_to_split)
print("List after splitting", Output)
Producción:

Initial list is: [1, 2, 3, 4, 5, 6, 7]
Split length list:  [2, 1, 3, 1]
List after splitting [[1, 2], [3], [4, 5, 6], [7]]

 
Método #2: Usar zipes otra forma de dividir una lista en sublistas de longitud dada.

# Python code to split a list into
# sublists of given length.
from itertools import accumulate
  
# Input list initialization
Input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  
# list of length in which we have to split
length_to_split = [2, 2, 3, 3]
  
# Using islice
Output = [Input[x - y: x] for x, y in zip(
          accumulate(length_to_split), length_to_split)]
  
# Printing Output
print("Initial list is:", Input)
print("Split length list: ", length_to_split)
print("List after splitting", Output)
Producción:

Initial list is: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Split length list:  [2, 2, 3, 3]
List after splitting [[1, 2], [3, 4], [5, 6, 7], [8, 9, 10]]

Publicación traducida automáticamente

Artículo escrito por everythingispossible 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 *