生成所有可能的排列然后组合每个可能的结果?

时间:2014-10-11 17:17:00

标签: python string algorithm combinations permutation

例如(在python中):

import itertools
perms = itertools.permutations([1,2])
print list(perms)

会给我们:

[(1, 2), (2, 1)]

但我的目标是我需要以 -xx-xx - 的形式提供所有可能的排列(或组合?)。 哪个需要包含a-z和0-9中的每个可能的字符。 在这种情况下,例如:

-aa-01-
-az-33-
-b6-k0-
-z9-5x-
-aa-aa-

(允许重复)等等,直到所有可能的组合都用完为止。

我明白这会导致大量可能的结果,我认为-xx-xx-是1679616可能的结果。

我的问题是,我如何最有效地解决这个问题?我不知道从哪里开始除了我已经能够使用itertools生成一些东西。我迷失在将每个组合映射到下一个组合的地方,直到它们全部完成。

1 个答案:

答案 0 :(得分:1)

itertools.product,使用repeat参数可能对您有用。

这是一个小例子:

import itertools

for x in itertools.product('abc', repeat=4):
    print x

这将打印出来:

('a', 'a', 'a', 'a')
('a', 'a', 'a', 'b')
('a', 'a', 'a', 'c')
('a', 'a', 'b', 'a')
('a', 'a', 'b', 'b')
('a', 'a', 'b', 'c')
   ... clip ....

我会将实际解决方案留给您。

相关问题