Работа с комбинациями в Python (itertools
)
Основные функции
-
combinations
— все комбинации без повторений (порядок не важен):
from itertools import combinations
cmb = list(combinations('ABC', 2)) # Все пары без повторов
print(cmb) # [('A', 'B'), ('A', 'C'), ('B', 'C')]
-
permutations
— все перестановки (порядок важен):
from itertools import permutations
cmb = list(permutations('ABC', 2)) # Все упорядоченные пары
print(cmb) # [('A', 'B'), ('A', 'C'), ('B', 'A'), ...]
-
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
Применение: