12.Библиотека itertools

Из этой библиотеки будут очень полезны пара функций для некоторых заданий из ЕГЭ

product

В двух словах не описать, что делает функция product, поэтому разберём на примере: from itertools import product

for item in list(product("АБВ", repeat=3)):
print("".join(item))
Вывод:
ААА
ААБ
ААВ
АБА
АББ
АБВ
АВА
АВБ
АВВ
БАА
БАБ
БАВ
ББА
БББ
ББВ
БВА
БВБ
БВВ
ВАА
ВАБ
ВАВ
ВБА
ВББ
ВБВ
ВВА
ВВБ
ВВВ

Функция перебрала все возможные комбинации из трёх значений с буквами "А", "Б", "В".

Решим задачу из ЕГЭ с его помощью:
Все 5-буквенные слова, в составе которых могут быть буквы А, Л, Г, О, Р, И, Т, М, записаны в алфавитном порядке и пронумерованы начиная с 1.

Ниже приведено начало списка.
ААААА
ААААГ
ААААИ
ААААЛ
ААААМ
ААААО
ААААР

Определите в этом списке количество слов с нечетными номерами, которые не начинаются с буквы Г и при этом содержат в своей записи не менее двух букв И.
Решение: from itertools import product

count = 0
number = 0
for p in product(sorted("АЛГОРИТМ"), repeat=5):
# Т.к. в приведённом начале списка видно, что буквы идут в алфавитном порядке,
# то мы отсортируем буквы с помощью sorted
number += 1
if number % 2 != 0 and p[0] != "Г" and p.count("И") >= 2:
# Исключаем слова, начинающиеся с буквы Г и содержащие в своей записи менее двух букв И
count += 1
print(count)
Вывод:
2429

permutations

С функцией permutations уже проще, она возвращает все возможные перестановки из последовательности. Пример: from itertools import permutations

for item in list(permutations("АБВ")):
print("".join(item))
Вывод:
АБВ
АВБ
БАВ
БВА
ВАБ
ВБА

Задача с ЕГЭ:
Сколько существует десятичных чисел, которые делятся на 5, при условии что все цифры числа различные?
Решение: from itertools import permutations

word = '0123456789'
count = 0
for j in range(1, 11):
for i in permutations(word, j):
x = ''.join(i)
if x[0] != '0' and (x[-1] == '5' or x[-1] == '0'):
count += 1
print(count + 1) # +1 случай когда число равно 0
Вывод:
1863219

Тесты для данного блока не предусмотрены.

Задания в практике представлены для демонстрации, лучше решать задания из других источников!