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',)