range()
и permutation()
оба возвращают генераторы, которые генерируют элементы по требованию. Вам не нужно звонить list()
и превращать их в списки. Просто итерируйте их напрямую и обращайтесь к элементам один за другим.
num = 11
base = range(1, num+1)
permutations = itertools.permutations(base)
for permutation in permutations:
# Do something with `permutation`.
(Обратите внимание, что генератор можно использовать только один раз. Если вы хотите перебирать перестановки более одного раза, вам нужно вызвать itertools.permutations()
несколько раз.)
до остановка после n предметов использование itertools.islice()
:
for permutation in itertools.islice(permutations, n):
# Do something with `permutation`.
Вы можете пропустить пункты на начало тоже. Это пропустит первые пять перестановок:
for permutation in itertools.islice(permutations, 5, n):
# Do something with `permutation`.
Если вы хотите подсчитать перестановки, вы можете добавить enumerate()
, который прикрепляет индекс к каждой записи:
for i, permutation in enumerate(itertools.islice(permutations, n)):
# Skip the fifth permutation.
if i == 4:
continue
# Do something with `permutation`.
По Кстати, пожалуйста, используйте строчные буквы для имен переменных. Только имена классов должны быть заглавными.