Вступительная теория

Библиотека itertools это набор быстрых и экономичных по объему памяти инструментов, которые полезны сами по себе или в сочетании.

Для нас основная цель их применения это комбинаторика - перебор всех возможных перестановок пар, чисел, символов и т.д.

Пример: нас попросили перебрать все возможные перестановки символов 1, 2, 3, 4 без повторений символов.

Untitled

import itertools

for s in itertools.permutations('1234', 4):
    print(s)

Мы использовали метод permutation, который принимал в качестве аргументов алфавит и длину ожидаемой строки.

Поменяем условие: нас попросили перебрать все возможные строки длинны 3, состоящие только из символов 1, 2, 3 включая повторения.

Untitled

import itertools

for s in itertools.product('123', repeat=3):
    print(s)

Можем догадаться, что метод product перебирает всевозможные комбинации из символов, состоящие из символов алфавита.

Другие методы и примеры из документации: