Сообщить об ошибке.

Функция batched() модуля itertools в Python

Разбивает данные по кортежам определенной длины

Синтаксис:

import itertools

# Новое в Python 3.12.
itertools.batched(iterable, n)

Параметры:

  • iterable - итерируемый объект с данными;
  • n - длина выходных кортежей.

Возвращаемое значение:

  • кортежи длиной n.

Описание itertools.batched():

Новое в Python 3.12.

Функция itertools.batched() модуля itertools разбивает пакетные данные из итерируемого объекта iterable на кортежи длиной n. Последняя партия может быть короче n.

В цикле перебирает входную итерацию и накапливает данные в кортежи до размера n. Вводимые данные потребляются лениво, ровно настолько, чтобы заполнить партию. Результат выдается, как только партия заполнен или когда входная итерация исчерпана.

Эта функция примерно эквивалентна:

def batched(iterable, n):
    # batched('ABCDEFG', 3) --> ABC DEF G
    if n < 1:
        raise ValueError('n must be at least one')
    it = iter(iterable)
    while batch := tuple(islice(it, n)):
        yield batch

Пример использования itertools.batched():

>>> flattened_data = ['roses', 'red', 'violets', 'blue', 'sugar', 'sweet']
>>> unflattened = list(batched(flattened_data, 2))
>>> unflattened
# [('roses', 'red'), ('violets', 'blue'), ('sugar', 'sweet')]

>>> for batch in batched('ABCDEFG', 3):
...     print(batch)

# ('A', 'B', 'C')
# ('D', 'E', 'F')
# ('G',)