2015-06-10 50 views
1

我想從一組字符串中獲取字符串的所有組合。例如:在一組中生成字符串及其子字符串的所有組合 - python

permut = set() 
permut.add("D") 
permut.add("C") 

def getAllKombos(stuff): 
    returnvalue = set() 
    for L in range(0, len(stuff) + 1): 
     for subset in itertools.combinations(stuff, L): 
      for i in subset: 
       x = x + (str(i)) 
       returnvalue.add(x) 
      x = "" 
    return returnvalue 

print getAllKombos(permut) 

我的輸出是:

set(['C', 'D', 'CD']) 

,但我需要

set(['C', 'D', 'CD', 'DC']) 

我不明白我在做什麼錯

+4

你需要使用排列。排列也會考慮到順序。 –

+0

https://docs.python.org/2/library/itertools.html#itertools.permutations – Kasramvd

回答

2
import itertools 

permut = set() 
permut.add("D") 
permut.add("C") 

def getAllKombos(stuff): 
    returnvalue = set() 
    for L in range(0, len(stuff) + 1): 
     for subset in itertools.permutations(stuff, L): 
      for i in subset: 
       x = x + (str(i)) 
       returnvalue.add(x) 
      x = "" 
    return returnvalue 

print getAllKombos(permut) 

這代碼現在可以工作,你所要做的就是將組合切換到permuta灰。

相關問題