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 islice
para 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 zip
es 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