Le fractionnement d'une liste en N parties de longueur à peu près égale

Quelle est la meilleure façon de diviser la liste en environ parties égales? Par exemple, si la liste contient 7 éléments et est divisé en 2 parties, nous voulons obtenir 3 éléments dans une partie, et l'autre doit avoir 4 éléments.

Je suis à la recherche de quelque chose comme even_split(L, n) qui rompt L en n pièces.

def chunks(L, n):
    """ Yield successive n-sized chunks from L.
    """
    for i in xrange(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ération en cours et 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 qui détruit l'ordre des éléments.

InformationsquelleAutor | 2010-01-25