Я не понимаю itertools.permutations (странный вывод) - PullRequest
0 голосов
/ 02 мая 2020

Извините, что беспокою вас из-за моей глупости ... Я не могу найти, как работают itertools.permutations, вывод странный! Предполагается, что он возвращает все возможные комбинации, например, грубую силу с длиной, определенной для вывода (a, b, c, ..., aa, ab, a c ..., aaa, aab, aa c ... является грубой силой, и перестановки с 3 для примера, как длина: ааа, ааа, аа c ... ди, def, deg, ... zaa, zab, za c ... ), не так ли?

Но если я использую "0123456789", иногда значения отсутствуют, например 040613, и многое не хватает, даже если в глобальном масштабе я получаю петлю значений. Так как же это работает?

Если вам нужны спецификации, я постараюсь привести все возможные даты в формате 050520 для примера (май второй, 2020). Но если даты отсутствуют ...

Мой код:

from itertools import permutations #or combinations
def dates(charset, maxlength):
    return (''.join(candidate) for candidate in permutations(charset, maxlength))
print(list(dates("0123456789", 6)))

Спасибо всем, кто попытается мне помочь, хорошего дня!

1 Ответ

2 голосов
/ 02 мая 2020

Перестановки "0123456789" не включают в себя "040613", так как для этого числа требуется 2 из нулевого токена.

Например:

>>> list(permutations("123", 3)) [('1', '2', '3'), ('1', '3', '2'), ('2', '1', '3'), ('2', '3', '1'), ('3', '1', '2'), ('3', '2', '1')] Не содержит "333" или "313"

...