2012-04-06 119 views
0

可能重複:
How to generate all permutations of a list in Python排列蟒蛇

我想找到列表中的一個元素的所有排列。 但隨後施加了一些條件..嗯.. 也許一個例子會幫助我更好地解釋。

我有四個名單

["1"],["0"],["a","b","c],["d","e","f"] 

現在我想有以下方式排列:

"10ad" ,"10bd","10cd","10ae", "10be" 
,"10bf".. 

等..

所以基本上每一個元素(每一個元素)? 現在我知道這樣做的非常天真的方式。 但是,這是什麼pythonic方式呢? 如果有? 任何建議

感謝

+0

如果訂單很重要,請詳細說明您想要訂購的訂單;我預計「10ce」會在「10be」之後出現。 – 2012-04-06 03:00:57

+0

@ScottHunter:訂單其實並不重要:) – Fraz 2012-04-06 03:12:04

回答

4

我想你想使用的itertools模塊,這是標準的Python發行的一部分。

例如:

import itertools 

a = ["1"] 
b = ["0"] 
c = ["a","b","c"] 
d = ["d","e","f"] 

for item in itertools.product(a, b, c, d): 
    print(item) 

編輯:爲了清楚起見,所述itertools.product功能提供所有組合在輸入列表的所有項目,不置換。但基於OP的措詞,我認爲這是他/她實際需要的。

+1

很好的答案。這會返回元組,所以稍微調整以完全匹配問題將如下所示:'for itertools.product(a,b,c,d)中的項目:print'%s%s%s'%item' – 2012-04-06 03:05:39

+2

或者,如果你想要一個字符串列表,你可以'''.join(item)' – Darthfett 2012-04-06 04:05:03