все Python 3itertoolsфункция
itertools.permutations
itertools
Все перестановки длины r из итерируемого (порядок важен).
Синтаксис
itertools.permutations(iterable, r=None)
Число результатов растёт как n!/(n−r)!, поэтому на большом входе перебор взрывается почти мгновенно — не заворачивай его в list() бездумно. Элементы считаются уникальными по позиции, а не по значению: в [1, 1] две единицы дадут внешне «дублирующиеся» кортежи, а если порядок внутри группы не важен, тебе нужен combinations.
Примеры
import itertools
print(list(itertools.permutations([1, 2, 3], 2))) # → [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
print([''.join(p) for p in itertools.permutations('abc')]) # → ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
print(len(list(itertools.permutations(range(4))))) # → 24
print(list(itertools.permutations('aab', 2))) # → [('a', 'a'), ('a', 'b'), ('a', 'a'), ('a', 'b'), ('b', 'a'), ('b', 'a')]
print(list(itertools.permutations([1, 2], 3))) # → []
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности