¿Cuál es la mejor manera de dividir una lista en partes más o menos iguales? Por ejemplo, si la lista tiene 7 elementos y se divide en 2 partes, queremos obtener 3 elementos en una parte, y la otra debe tener 4 elementos.
Busco algo así como even_split(L, n)
que las interrupciones L
enn
partes.
def chunks(L, n):
""" Yield successive n-sized chunks from L.
"""
for i in range(0, len(L), n):
yield L[i:i+n]
El código anterior proporciona fragmentos de 3, en lugar de 3 fragmentos. Simplemente podría transponer (iterar sobre esto y tomar el primer elemento de cada columna, llamar a esa parte uno, luego tomar el segundo y ponerlo en la parte dos, etc.), pero eso destruye el orden de los elementos.
>>> chunkIt(range(8), 6)
=>[[0], [1], [2, 3], [4], [5], [6], [7]]