quelle est la meilleure façon de diviser une liste dans à peu près égale des parties? par exemple, si j'ai une liste avec 54 éléments et je tiens à le diviser en 3 parties à peu près égales? J'aimerais les pièces à être aussi régulière que possible, espérons-le, l'attribution des éléments qui n'entrent pas dans une manière qui donne le plus de parties égales. pour donner un cas concret, si la liste contient 7 éléments et je tiens à le diviser en 2 parties, j'avais idéalement voulez obtenir les 3 premiers éléments dans un bac, la deuxième devrait avoir 4 éléments.
donc, pour résumer, je suis à la recherche de quelque chose comme even_split(l, n) qui casse l dans à peu près n-les différentes parties.
le mieux je pense est quelque chose qui a été posté ici:
def chunks(l, n):
""" Yield successive n-sized chunks from l.
"""
for i in xrange(0, len(l), n):
yield l[i:i+n]
exemple:
l = range(54)
chunks_of_three = chunks(l, 3)
mais cela donne des morceaux de 3, plutôt que 3 parties égales. Je pourrais simplement parcourir et de prendre le premier élément de chaque colonne, appel que la première partie, puis prendre la deuxième et de la mettre dans la partie deux, etc. mais cela semble inefficace et peu élégante. il est également contraire à l'ordre de la liste.
toutes les idées sur ce point?
merci.