人。 看起来我并不真正理解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'))
答案 0 :(得分:2)
当您递归调用<s:iterator value="fieldErrors">
<s:property value="key"/>:
<s:iterator value="value">
<s:property/>
</s:iterator>
</s:iterator>
时,您不会对返回值执行任何操作。
如果您的Python版本(3.3及更高版本)中有gen_perm()
,请尝试此操作:
yield from
或者这适用于所有Python版本。
def gen_perm(cur_item_set, cur_str=''):
if not cur_item_set:
yield cur_str
else:
for item in cur_item_set:
yield from gen_perm(cur_item_set - {item}, cur_str + item)
g = gen_perm(set('abcd'))
print (list(g))