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
Тесты для данного блока не предусмотрены.
Задания в практике представлены для демонстрации, лучше решать задания из других источников!