- "key" è la chiave utilizzata per ordinare gli elementi lista
- come argomento accetta una funzione alla quale verrà passato un argomento che è un elemento della lista
- tale funzione verrà chiamata tante volte quanti sono gli elementi della lista
- l'ordinamento avverrà in base ai valori di ritorno della funzione
Un comune sort di questo tipo (ovvero quello di default):
codice:
>>> l = [5,4,3,2,1]
>>> l.sort()
>>> l
[1, 2, 3, 4, 5]
...lo puoi immaginare alla stregua di questo:
codice:
>>> l = [5,4,3,2,1]
>>> l.sort(key=lambda x: x)
>>> l
[1, 2, 3, 4, 5]
Questi fanno la stessa cosa in quanto la funzione lambda ritorna i singoli elementi della lista cosi come sono (lambda x: x), senza applicare nessuna modifica.
Cambiando la logica della funzione, come mostrato nel mio primo messaggio, non fai altro che modificare i singoli elementi della lista ad ogni iterazione utilizzando un tuo criterio ben specifico.
Nel mio primo messaggio si applica abs() ad ogni elemento della lista e il sort è applicato proprio a quello che esce fuori da abs(x) anzichè x stesso, come invece accade di default.
In questo modo, "internamente", gli elementi della lista non appariranno più come:
[2, -3, -6, 0, 4]
...ma:
[abs(2), abs(-3), abs(-6), abs(0), abs(4)]
...che sarà risolto in:
[2, 3, 6, 0, 4]
...e solo infine ordinato:
[0, 2, 3, 4, 6]