ePrometeusCorsoLinuxLinux
testi articoli
Testi Articoli  Download
Home | Espressioni | Comandi | Funzioni | Moduli | Classi | 
CorsoJava è ora Video! Free for all!
Clicca Qui!
Corso Python
Python: le funzioni
Funzioni
Passaggio Parametri
Parametri
argomenti "modello"
unpacking di parametri
Lambda
Ordinamento


<<< Ordinamento

Le funzioni in generale possono anche essere passate come argomento, ed è qui che la lambda torna particolarmente utile.

Un caso importante in cui è richiesta una funzione come argomento è l'ordinamento. Consideriamo il seguente caso. Creiamo una lista che contiene un elenco non ordinato di numeri, ed ordiniamola:

>>> l = [ 6, 9, 2, 4, 2, 1]
>>> m = l[:]
>>> m.sort()
>>> m
[1, 2, 2, 4, 6, 9]

Notare che abbiamo fatto la copia per evitare di ottenere di ordinare la lista originale.

Il metodo sort delle liste prende come argomento una funzione, che per default è cmp. Questa funzione prende due numeri e ritorna 0 se sono uguali, 1 se il primo è maggiore del secondo e -1 se il primo è minore del secondo. La sort segue un suo algoritmo interno e applica la funzione per ogni coppia di numeri da confrontare per scoprire quale viene prima.

Se vogliano ottenere per esempio un ordinamento inverso, dobbiamo definire una funzione analoga alla cmp, ma che ritorna 1 se il primo è minore del secondo, e -1 se il primo è maggiore del secondo. Il modo più facile per definire questo comportamento è scrivere "- cmp (x,y) ". Quindi ecco come possiamo ottenere l'ordinamento inverso:

>>> l = [ 6, 9, 2, 4, 2, 1]
>>> m = l[:]
>>> m.sort(lambda x,y: -cmp(x,y))
>>> m
[9, 6, 4, 2, 2, 1]

Notiamo che potevamo anche scrivere lambda x,y: cmp(y,x) ottenendo lo stesso effetto.

ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com