[Python] Questo, da Python, non me lo sarei mai aspettato
Daniele Zambelli
daniele.zambelli a gmail.com
Dom 11 Feb 2024 16:32:40 CET
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?
Maggiori informazioni sulla lista
Python