СПРАВОЧНИК
Модуль itertools в Python
Инструменты для эффективных итераций
Модуль itertools из стандартной библиотеки предоставляет набор функций для эффективной работы с итераторами. Они экономят память, так как вычисляют значения «лениво» — по одному, а не строят весь список сразу. Функции делятся на три группы: бесконечные итераторы, итераторы, завершающиеся на самом коротком входе, и комбинаторные итераторы.
import itertoolsПоскольку функции возвращают итераторы, в примерах ниже результат обёрнут в list(), чтобы показать содержимое.
Бесконечные итераторы 3
itertools.count()
itertools.count(start=0, step=1)Возвращает бесконечный итератор арифметической прогрессии, начиная со start с шагом step.itertools.cycle()
itertools.cycle(iterable)Бесконечно повторяет элементы переданного итерируемого объекта по кругу.itertools.repeat()
itertools.repeat(object, times=None)Повторяет один и тот же объект указанное число раз или бесконечно.Завершающиеся итераторы 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
itertools.combinations()
itertools.combinations(iterable, r)Возвращает все сочетания длины r без учёта порядка и без повторений.itertools.combinations_with_replacement()
itertools.combinations_with_replacement(iterable, r)Возвращает сочетания длины r, допуская повторное использование элементов.itertools.permutations()
itertools.permutations(iterable, r=None)Возвращает все упорядоченные размещения длины r из элементов.itertools.product()
itertools.product(*iterables, repeat=1)Возвращает декартово произведение переданных итерируемых объектов.