Qual è il modo migliore per dividere un elenco in parti approssimativamente uguali? Ad esempio, se l'elenco ha 7 elementi e viene diviso in 2 parti, vogliamo ottenere 3 elementi in una parte e l'altra dovrebbe avere 4 elementi.
Sto cercando qualcosa del genere even_split(L, n)
che si rompe L
in n
parti.
def chunks(L, n):
""" Yield successive n-sized chunks from L.
"""
for i in range(0, len(L), n):
yield L[i:i+n]
Il codice sopra fornisce blocchi di 3, piuttosto che 3 pezzi. Potrei semplicemente trasporre (iterare su questo e prendere il primo elemento di ogni colonna, chiamare quella prima parte, quindi prendere la seconda e metterla nella seconda parte, ecc.), Ma ciò distrugge l'ordinamento degli articoli.
>>> chunkIt(range(8), 6)
=>[[0], [1], [2, 3], [4], [5], [6], [7]]