Python
Разбиение списка на части (chunks)
Генератор, который режет любую последовательность на блоки фиксированного размера — удобно для батчей и 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]]