Python

Разбиение списка на части (chunks)

Algonexys · 07.08.2026 · 👁 0

Генератор, который режет любую последовательность на блоки фиксированного размера — удобно для батчей и bulk_create.

Код

from itertools import islice


def chunks(seq, size):
    """Разбить последовательность на списки по size элементов."""
    for i in range(0, len(seq), size):
        yield seq[i:i + size]


def ichunks(iterable, size):
    """То же самое для генераторов: не требует len() и не грузит всё в память."""
    it = iter(iterable)
    while batch := list(islice(it, size)):
        yield batch


print(list(chunks(range(10), 3)))     # [[0,1,2], [3,4,5], [6,7,8], [9]]
print(list(ichunks(range(10), 4)))    # [[0,1,2,3], [4,5,6,7], [8,9]]