Функции itertools.product и enumerate в Python: полный разбор для ЕГЭ
1.1. Что это такое
1.2. Как подключить
from itertools import product 1.3. Синтаксис
product(последовательность, repeat=количество) 1.4. Пример без repeat
from itertools import product
for tup in product("АБ", "12"):
print(tup) ('А', '1')
('А', '2')
('Б', '1')
('Б', '2') for x in "АБ":
for y in "12":
print((x, y)) 1.5. Пример с repeat
from itertools import product
for tup in product("АБ", repeat=3):
print(tup) ('А', 'А', 'А')
('А', 'А', 'Б')
('А', 'Б', 'А')
('А', 'Б', 'Б')
('Б', 'А', 'А')
('Б', 'А', 'Б')
('Б', 'Б', 'А')
('Б', 'Б', 'Б') for x1 in "АБ":
for x2 in "АБ":
for x3 in "АБ":
print((x1, x2, x3)) 1.6. Важно: product возвращает кортежи
from itertools import product
for tup in product("АБ", repeat=3):
x = ''.join(tup)
print(x) ААА
ААБ
АБА
АББ
БАА
БАБ
ББА
БББ 1.7. Почему это удобно
2.1. Что это такое
2.2. Синтаксис
enumerate(последовательность, start=начало_нумерации) 2.3. Пример без start
fruits = ["яблоко", "банан", "вишня"]
for i, fruit in enumerate(fruits):
print(i, fruit) 0 яблоко
1 банан
2 вишня 2.4. Пример с start=1
fruits = ["яблоко", "банан", "вишня"]
for i, fruit in enumerate(fruits, start=1):
print(i, fruit) 1 яблоко
2 банан
3 вишня 2.5. Где это нужно на ЕГЭ
for c, tup in enumerate(product(s, repeat=5), start=1): Вот как обе функции работают вместе в задании №8:
from itertools import product
s = "АЕКНТЦ"
not_s = "АЕК"
for c, tup in enumerate(product(s, repeat=5), start=1):
x = ''.join(tup)
if (c % 2 == 0) and (tup[0] not in not_s) and ('Т' in x):
print(c, x)
break Ошибка 1. Забыли ''.join(tup)
for c, tup in enumerate(product(s, repeat=5), start=1):
if tup.count("Т") >= 1: # Ошибка! У кортежа нет метода count for c, tup in enumerate(product(s, repeat=5), start=1):
x = ''.join(tup)
if x.count("Т") >= 1: Ошибка 2. Забыли start=1
for c, tup in enumerate(product(s, repeat=5)): # Нумерация с 0 for c, tup in enumerate(product(s, repeat=5), start=1): Ошибка 3. Перепутали порядок букв
Ошибка 4. break не останавливает всё
Где это используется
Я — Олег Алексеевич, репетитор по информатике. Готовлю к ЕГЭ более 15 лет.
На своих занятиях мы:
Хотите попробовать? Запишитесь на первое занятие — познакомимся, определим ваш уровень и составим план подготовки.
Переходите на мой сайт, чтобы узнать подробности и записаться: Репетиторы рядом