Python itertools комбинации управление итерацией


Я использую itertools для генерации комбинаций, но я хотел бы контролировать выход и иметь возможность запрашивать следующую запись:

from itertools import permutations

def getPass():
    chars = '4$5%6^7&'
    passd = ''
    for comb in permutations(chars):
       passd = ''.join(comb)     
    return passd

while(True):
    print getPass()
Но я не могу найти никакой соответствующей документации. Как мне это сделать?
1 3

1 ответ:

Можно использовать генератор :

from itertools import permutations

def getPass():
    chars = '4$5%6^7&'
    for comb in permutations(chars):
       yield ''.join(comb)     

for i in getPass():
    print(i)
    input('\ncontinue?')

Или даже выражение генератора :

from itertools import permutations

def getPass():
    return (''.join(p) for p in permutations('4$5%6^7&'))

for i in getPass():
    print(i)
    input('\ncontinue?')

Вывод:

4$5%6^7&

continue?
4$5%6^&7

continue?
4$5%67^&

continue?
4$5%67&^

continue?
4$5%6&^7

continue?
...