【发布时间】:2013-02-04 19:25:59
【问题描述】:
我正在制作一个类似于 John the Ripper 的专用实用程序,并且我想使用一个循环来返回所有字符串,最多可以从字符串中形成 x 个字符。例如,如果“种子”字符串是abcd,它应该返回:
a
b
c
d
aa
ab
ac
等等。如果字符限制为 10,则会生成 aaaaaaaaaa、abcddcbaaa 等。是否有一个简单的for 循环来执行此操作,还是比这更复杂?
【问题讨论】:
-
您正在寻找
itertools.permutations()。 -
这个答案here 是你心目中的那种东西吗? [很容易修改它以添加大小限制。]
-
@Lattyware 人,Python 真棒。
-
@Lattyware:
itertools.product(),不是吗?排列不包括重复值,所以没有'aaaaaaaa'。 -
@tkbx:这两个倒退了。
abc只有 3 的一种组合 (abc),但有 3 的 6 种排列。(不过,abc确实有 2 的 3 种组合和 1 的 3 种组合,其中一种确实是a)。