人。 文字列のすべての順列を生成するはずのこのコードで間違いを理解していないので、私はPythonジェネレータ関数の概念を実際に理解していないようです。Pythonジェネレータ関数がサポートしていないNaive置換アルゴリズム
例えば、この1は、簡単なセットの拡張に基づいており、それが
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')
一方、このコードは動作しません動作します:あなたが再帰的にgen_perm()
を呼び出すと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以降を使用していますか? –