夥計。 看來我並不真正理解Python生成器函數的概念,因爲我沒有想到在這個代碼中應該產生字符串的所有排列的錯誤。python生成器函數不支持的樸素置換算法
例如,這一個是基於簡單的設置擴張和它的作品
def permutations(seq):
perm_set = set()
def perm(cur_item_set, cur_str=''):
if not cur_item_set:
perm_set.add(cur_str)
else:
for item in cur_item_set:
perm(cur_item_set - set(item), cur_str + item)
perm(set(seq))
for (i, item) in enumerate(perm_set):
print(i + 1, item)
permutations('abcdef')
同時,該代碼不起作用:list(g)
提供[]
def gen_perm(cur_item_set, cur_str=''):
if not cur_item_set:
yield cur_str
else:
for item in cur_item_set:
gen_perm(cur_item_set - {item}, cur_str + item)
g = gen_perm(set('abcd'))
你使用Python3.3或更高版本? –