Jak najlepiej podzielić listę na mniej więcej równe części? Na przykład, jeśli lista ma 7 elementów i jest podzielona na 2 części, chcemy uzyskać 3 elementy w jednej części, a druga powinna mieć 4 elementy.
Szukam czegoś takiego, even_split(L, n)
co rozpada się L
na n
części.
def chunks(L, n):
""" Yield successive n-sized chunks from L.
"""
for i in range(0, len(L), n):
yield L[i:i+n]
Powyższy kod daje porcje po 3 zamiast 3 porcji. Mógłbym po prostu transponować (powtórzyć to i pobrać pierwszy element z każdej kolumny, wywołać tę część pierwszą, a następnie wziąć drugą i umieścić ją w części drugiej itd.), Ale to niszczy kolejność elementów.
>>> chunkIt(range(8), 6)
=>[[0], [1], [2, 3], [4], [5], [6], [7]]