СПРАВОЧНИК

Модуль itertools в Python

Инструменты для эффективных итераций

Модуль itertools из стандартной библиотеки предоставляет набор функций для эффективной работы с итераторами. Они экономят память, так как вычисляют значения «лениво» — по одному, а не строят весь список сразу. Функции делятся на три группы: бесконечные итераторы, итераторы, завершающиеся на самом коротком входе, и комбинаторные итераторы.

import itertools

Поскольку функции возвращают итераторы, в примерах ниже результат обёрнут в list(), чтобы показать содержимое.

Бесконечные итераторы 3

Завершающиеся итераторы 13

itertools.accumulate()
itertools.accumulate(iterable, func=operator.add, *, initial=None)Возвращает накопленные суммы или результаты применения функции func.
itertools.chain()
itertools.chain(*iterables)Последовательно перебирает элементы нескольких итерируемых объектов как один.
itertools.chain.from_iterable()
itertools.chain.from_iterable(iterable)Разворачивает один итерируемый объект из итерируемых в плоскую последовательность.
itertools.compress()
itertools.compress(data, selectors)Отбирает элементы data, для которых соответствующий элемент selectors истинен.
itertools.dropwhile()
itertools.dropwhile(predicate, iterable)Пропускает элементы, пока предикат истинен, затем выдаёт все оставшиеся.
itertools.filterfalse()
itertools.filterfalse(predicate, iterable)Возвращает элементы, для которых предикат ложен — противоположность filter().
itertools.groupby()
itertools.groupby(iterable, key=None)Группирует подряд идущие элементы с одинаковым значением ключа.
itertools.islice()
itertools.islice(iterable, stop) / islice(iterable, start, stop, step=1)Возвращает срез итератора по индексам без создания промежуточного списка.
itertools.pairwise()
itertools.pairwise(iterable)Возвращает пары соседних элементов: (s0, s1), (s1, s2), (s2, s3)...
itertools.starmap()
itertools.starmap(function, iterable)Применяет функцию к аргументам, распакованным из каждого кортежа последовательности.
itertools.takewhile()
itertools.takewhile(predicate, iterable)Выдаёт элементы, пока предикат истинен, и останавливается на первом ложном.
itertools.tee()
itertools.tee(iterable, n=2)Создаёт n независимых итераторов из одного исходного итерируемого объекта.
itertools.zip_longest()
itertools.zip_longest(*iterables, fillvalue=None)Объединяет итерируемые объекты, дополняя короткие значением fillvalue.

Комбинаторные итераторы 4

Поддержать проект