Библиотека itertools
это набор быстрых и экономичных по объему памяти инструментов, которые полезны сами по себе или в сочетании.
Для нас основная цель их применения это комбинаторика - перебор всех возможных перестановок пар, чисел, символов и т.д.
Пример: нас попросили перебрать все возможные перестановки символов 1, 2, 3, 4 без повторений символов.
import itertools
for s in itertools.permutations('1234', 4):
print(s)
Мы использовали метод permutation, который принимал в качестве аргументов алфавит и длину ожидаемой строки.
Поменяем условие: нас попросили перебрать все возможные строки длинны 3, состоящие только из символов 1, 2, 3 включая повторения.
import itertools
for s in itertools.product('123', repeat=3):
print(s)
Можем догадаться, что метод product
перебирает всевозможные комбинации из символов, состоящие из символов алфавита.