Stavo studiando degli algoritmi per produrre la lista delle permutazioni di una sequenza, ho modificato una funzione che ho trovato su stackoverflow e mi sono imbattuto in un comportamento molto strano (per me). Lo script è questo:
def permutazioni1(head, tail='', result=[]): if len(head) == 0: result.append(tail) else: for i in range(len(head)): permutazioni1(head[:i] + head[i+1:], tail + head[i]) else: return(result) print(permutazioni1("abc")) print('---------------------') print(permutazioni1("def")) Io mi aspettavo che il parametro "result" fosse locale alla funzione "permutazioni1" e che non mantenesse il suo contenuto tra una chiamata e l'altra della funzione il risultato dello script è: ['abc', 'acb', 'bac', 'bca', 'cab', 'cba'] --------------------- ['abc', 'acb', 'bac', 'bca', 'cab', 'cba', 'def', 'dfe', 'edf', 'efd', 'fde', 'fed'] Probabilmente non è il modo corretto per ottenere la lista delle permutazioni, ma qualcuno sa spiegarmi perché si comporta così e come eventualmente correggerlo? Grazie, da una domenica uggiosa. -- Daniele www.matematicadolce.eu Perché la scuola, invece di essere un luogo dove ci si allena a imparare, è un luogo dove si fa finta di sapere? _______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python