我不明白itertools.permutations(奇怪的输出)。

问题描述 投票:0回答:1

很抱歉用我的愚蠢来打扰你......我找不到itertools.permutations是如何工作的,输出的结果很奇怪!它应该返回所有可能的组合,就像一个定义了输出长度的蛮力(a,b,c,......,aa,ab,ac......,aaa,aab,aac......是一个蛮力,而长度为3的排列组合:aaa,aab,aac......是一个蛮力。 ..., aa, ab, ac..., aaa, aab, aac...是一个蛮力,而长度为3的permutations:aaa, aab, aac...dee, def, deg, ...zaa, zab, zac...),不是吗?

但如果我使用 "0123456789",有时会丢失一些值,比如040613,即使在全局范围内有很多值,也会丢失很多。那么它是如何工作的呢?

如果你想知道具体的日期,我试图得到所有可能的日期,例如格式为050520(May the second, 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)))

感谢所有试图帮助我的人,祝你有愉快的一天 !

python python-3.x itertools brute-force
1个回答
2
投票

0123456789 "的排列组合不包括 "040613",因为这个数字需要2个零标记。

例如:"0123456789 "不包含 "03613",因为这个数字需要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"

© www.soinside.com 2019 - 2024. All rights reserved.