伙计。 看来我并不真正理解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或更高版本? –