Enfoques Eficientes para la Partición de Listas
Rebanado de Listas (List Slicing)
Una de las formas más simples de dividir una lista en Python es utilizar el rebanado de listas. Este enfoque consiste en dividir la lista en fragmentos más pequeños especificando los índices de inicio y fin de cada fragmento.
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
chunk_size = 3
chunks = [my_list[i:i+chunk_size] for i in range(0, len(my_list), chunk_size)]
print(chunks)
Salida:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
Uso de iter()
y zip()
Otro enfoque eficiente para dividir una lista es utilizar la función iter()
en combinación con la función zip()
. Este método crea un iterador que devuelve fragmentos de la lista.
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
chunk_size = 3
chunks = [list(chunk) for chunk in zip(*[iter(my_list)]*chunk_size)]
print(chunks)
Salida:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
numpy.array_split()
Si estás trabajando con conjuntos de datos grandes, puedes aprovechar la función numpy.array_split()
de la biblioteca NumPy para dividir una lista en fragmentos de tamaño igual. Este enfoque es especialmente eficiente para listas grandes.
import numpy as np
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
chunk_size = 3
chunks = np.array_split(my_list, (len(my_list) + chunk_size - 1) // chunk_size)
print(list(chunks))
Salida:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
Cada uno de estos enfoques tiene sus propias ventajas y casos de uso, dependiendo de los requisitos específicos de tu proyecto. La elección del método más eficiente dependerá de factores como el tamaño de la lista, el tamaño deseado de los fragmentos y los requisitos generales de rendimiento de tu aplicación.