2013-07-24 38 views
0

我是python的新手。python的所有元素的排列

我得到了一個逗號分隔的字符串。 Like'a,b,c,d'

我需要分開獲取分隔的元素,然後需要爲逗號分隔的元素找到所有可能的安排。

感謝

+0

如果你想學習,思考如何通過遞歸做到這一點! – rnbcoder

回答

6

您可以使用itertools模塊裏

>>> a = 'aaa,bbb,ccc' 
>>> b = a.split(',') 
>>> import itertools 
>>> list(itertools.permutations(b)) 
>>> [('aaa', 'bbb', 'ccc'), ('aaa', 'ccc', 'bbb'), ('bbb', 'aaa', 'ccc'), ('bbb', 'c 
cc', 'aaa'), ('ccc', 'aaa', 'bbb'), ('ccc', 'bbb', 'aaa')] 
+2

''b''沒有在您的解決方案中定義! – hivert

+0

被刪除...再次添加 –

+2

對我來說,使用''[i for i in ...]''而不是'list(...)''似乎很奇怪。 –

3

您是否在尋找itertools.permutations()的排列?

>>> import itertools 
>>> for elem in itertools.permutations(testStr.split(',')): 
     print ",".join(elem) 


a,b,c,d 
a,b,d,c 
a,c,b,d 
a,c,d,b 
a,d,b,c 
a,d,c,b 
b,a,c,d 
... 
0

itertools最好

這裏是傳統的遞歸技術

def permu(s, e=''): 
    if len(s) == 0: print ",".join([ i for i in e]) 
    else: 
     for i in range(len(s)): 
      permu(s[0:i] + s[i+1:], e+s[i]) 

str="a,b,c,d" 
permu("".join(str.split(',')))