gars. Il semble que je ne comprenne pas vraiment le concept des fonctions du générateur Python, parce que je n'ai pas compris l'erreur dans ce code qui est censé produire toutes les permutations des caractères chaîne.Algorithme de permutation naïf que la fonction de générateur python ne prend pas en charge
Par exemple, celui-ci est basé sur l'expansion de jeu simple et il fonctionne
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')
Pendant ce temps, ce code ne fonctionne pas: list(g)
fournit []
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'))
Utilisez-vous Python3.3 ou supérieur? –