Модуль itertools (product, permutations, combinations) в Python для ЕГЭ/ОГЭ: шпаргалка и примеры | СмартКИМ
СмартКИМ УДОБНАЯ ПОДГОТОВКА К ЕГЭ И ОГЭ
Все разборы Решать в тренажере Войти в СмартКИМ
ЕГЭ (1–27) ОГЭ (1–15) Python: шпаргалка
Быстрый переход по номерам и темам
Продвинутый синтаксис Время: 5-10 мин itertools.product itertools.permutations itertools.combinations

Модуль itertools (product, permutations, combinations)

Тема: Генерация комбинаций, перестановок и декартова произведения
Модуль itertools — главный чит-код для решения Заданий №2, №8 и №24 ЕГЭ. Позволяет в одну строчку перебирать любые комбинаторные структуры.

1. Разница между product, permutations и combinations

Функция Повторы элементов? Порядок важен? Пример для 'AB', k=2
product('AB', repeat=2) ДА (с возвращением) ДА AA, AB, BA, BB
permutations('AB', 2) НЕТ (каждый 1 раз) ДА AB, BA
combinations('AB', 2) НЕТ НЕТ AB

Разновидности и прототипы задания на экзамене

1. product() — слова с повторениями / наборы (x,y,z,w)
Декартово произведение. product([0, 1], repeat=4) — все 16 строк таблицы истинности.
2. permutations() — перестановки без повторений
Все возможные перестановки букв слова. permutations('ABC') -> ABC, ACB, BAC, BCA, CAB, CBA.
3. combinations() — сочетания (выбор K из N)
Выбор K элементов без учета порядка.

Боевой шаблон решения на Python

Запустить код в онлайн-песочнице
Боевой шаблон решения на Python
# === Шпаргалка: itertools на боевых задачах ЕГЭ ===
from itertools import product, permutations, combinations

# 1. Задание 2 ЕГЭ: Все комбинации для 4 переменных:
for x, y, z, w in product([0, 1], repeat=4):
    F = (x <= y) and (z <= w)
    if F:
        pass

# 2. Задание 8 ЕГЭ: Алфавитный список 5-буквенных слов:
words = sorted("КАЛИЙ")
for idx, p in enumerate(product(words, repeat=5), start=1):
    w = "".join(p)
    if w.count('Й') <= 1 and w[0] != 'Й':
        pass

# 3. Перестановки букв слова с удалением дубликатов:
unique_anagrams = set("".join(p) for p in permutations("МОЛОКО"))
print("Уникальных анаграмм слова МОЛОКО:", len(unique_anagrams))

Типичные ошибки

✕ Не так
# ❌ Ошибка: Забыть склеить кортеж в строку
for p in product('ABC', repeat=3): if p.count('A') == 1: # p — это ('A', 'B', 'C'), а не 'ABC'!
✓ Так
# ✅ Правильно: Склеивать кортеж в строку:
w = ''.join(p)
ГРОБ

ЛОВУШКА: Повторяющиеся символы в permutations()

Если в слове есть одинаковые буквы (например, 'ТАТЬЯНА'), permutations выдаст много одинаковых кортежей.

Как обойти
Всегда оборачивайте результат permutations в set()!

Лайфхаки на экзамене

  1. Всегда сортируйте алфавит sorted('СПОРТ'), если в Задании 8 слова идут в алфавитном порядке!
  2. Для нумерации с единицы передавайте enumerate(..., start=1).
Все разборы заданий Открыть в тренажере СмартКИМ