【发布时间】:2017-07-07 19:40:26
【问题描述】:
伙计们。 似乎我并不真正理解 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或更高版本吗?
标签: python generator permutation