2014-10-11 85 views
-1

例如(在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

itertools.product,重複的參數可能適合你。

這裏有一個小例子:

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 .... 

我會離開的實際解決方案給你。