Kotmee Messenger
ВойтиРегистрация
Программирование для начинающих - CodeChick

itertools.batched: нарезать последовательность кусками фиксированной длины

Нужно разбить список на пачки по N элементов: батчи API, строки таблицы, чанки для обработки. Ручной цикл с шагом N и срезами легко ошибается на «хвосте». С Python 3.12 есть готовый способ — batched из itertools. Он берёт iterable и размер n, отдаёт кортежи длины n. Последний кусок может быть короче, если элементов не хватило — без IndexError. from itertools import batched print(list(batched(range(1, 11), 3))) # [(1, 2, 3), (4, 5, 6), (7, 8, 9), (10,)] print(list(batched("abcdefg", 2))) # [('a', 'b'), ('c', 'd'), ('e', 'f'), ('g',)] Важно: n должен быть не меньше 1, иначе ValueError. Это итератор — если пачки нужны дважды, оберни в list. Когда брать: непересекающиеся окна фиксированной длины. Когда не брать: нужны скользящие окна со сдвигом на 1 (соседи) — тогда pairwise или свой sliding window; batched куски не перекрываются. источник: #шпаргалка