Статья Автор: Деникина Н.В., Деникин А.В.

Комбинаторика на Python

Работа с комбинациями в Python (itertools)

Основные функции

  1. combinations — все комбинации без повторений (порядок не важен):

    from itertools import combinations
    cmb = list(combinations('ABC', 2))  # Все пары без повторов
    print(cmb)  # [('A', 'B'), ('A', 'C'), ('B', 'C')]
  2. permutations — все перестановки (порядок важен):

    from itertools import permutations
    cmb = list(permutations('ABC', 2))  # Все упорядоченные пары
    print(cmb)  # [('A', 'B'), ('A', 'C'), ('B', 'A'), ...]
  3. product — декартово произведение (все возможные комбинации с повторами):

    from itertools import product
    cmb = list(product('ABC', repeat=2))  # Все пары, включая AA, BB, CC
    print(cmb)  # [('A', 'A'), ('A', 'B'), ..., ('C', 'C')]

Преобразование в строки

Чтобы получить не кортежи, а строки, используем "".join:

for p in product('ABC', repeat=2):
    word = "".join(p)
    print(word)  # AA, AB, AC, BA, BB, BC, CA, CB, CC

Применение:

  • Генерация паролей,

  • Перебор вариантов в задачах оптимизации,

  • Анализ текстовых данных.

Печать