import itertools def batched(iterable, n): it = iter(iterable) while batch := tuple(itertools.islice(it, n)): yield batch