Python Glossary English

Python 3.12+itertoolsфункция

itertools.batched

itertools

Разбивает итерируемое на кортежи длины n (последний может быть короче); Python 3.12+.

Синтаксис

itertools.batched(iterable, n)

Возвращает ленивый итератор кортежей, а не список, — оборачивайте в list(), если нужен весь результат сразу. До 3.12 для нарезки писали zip(*[iter(it)]*n), но тот молча выбрасывал неполный последний кусок, а batched его сохраняет; с 3.13 есть strict=True, чтобы потребовать одинаковую длину всех кусков (иначе ValueError), а n меньше 1 всегда ошибка.

Примеры

import itertools
print(list(itertools.batched([1, 2, 3, 4, 5], 2)))   # → [(1, 2), (3, 4), (5,)]
print(list(itertools.batched('abcdef', 3)))   # → [('a', 'b', 'c'), ('d', 'e', 'f')]
print([sum(b) for b in itertools.batched(range(1, 7), 3)])   # → [6, 15]
print(list(itertools.batched([], 3)))   # → []
print(list(itertools.batched([1, 2, 3], 0)))   # → ValueError

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности