Quelle est la meilleure façon de diviser une liste en parties à peu près égales? Par exemple, si la liste a 7 éléments et est divisée en 2 parties, nous voulons obtenir 3 éléments dans une partie, et l'autre doit avoir 4 éléments.
Je cherche quelque chose comme even_split(L, n)
ça qui se brise L
en plusieurs n
parties.
def chunks(L, n):
""" Yield successive n-sized chunks from L.
"""
for i in range(0, len(L), n):
yield L[i:i+n]
Le code ci-dessus donne des morceaux de 3, plutôt que 3 morceaux. Je pourrais simplement transposer (itérer sur ceci et prendre le premier élément de chaque colonne, appeler cette première partie, puis prendre la seconde et la mettre dans la deuxième partie, etc.), mais cela détruit l'ordre des éléments.
>>> chunkIt(range(8), 6)
=>[[0], [1], [2, 3], [4], [5], [6], [7]]