Python: filtrare le liste

Le liste, si sa, sono croce e delizia di ogni programmatore e saperle usare rende il lavoro di gestione dei dati nel codice molto più comodo e semplice. Tutto, in un certo senso, può essere logicamente ricondotto ad una lista e pertanto questo tipo di dato è molto utilizzato in tutti i listati.
La nostra attenzione questa volta si sofferma su python e sulla possibilità che il linguaggio offre di filtrare rapidamente le liste.
Immaginiamo di avere una lista di anni così strutturata:
anni = [1989, 1987, 1956, 1820, 1452, 1999, 2006, 1756]
e di voler filtrare solo gli anni che vengono dopo il 1900. Normalemente si opererebbe con una struttura sintattica simile alla seguente:
nuova_lista = []
for anno in anni:
    if anno > 1900:
        nuova_lista.append(anno)
        print 'Vecchia lista:', anni
        print 'Nuova lista:', nuova_lista
Come si può ben vedere il codice è semplice e pulito e svolge bene il suo lavoro ma è possibile minimizzare ed ottimizzare ancora un codice già così sintetico? La risposta ovviamente è si ed ora vedremo come trasformare il nostro snippet:
nuova_lista = [anno for anno in anni if anno > 1900]
print 'Vecchia lista:', anni
print 'Nuova lista:', nuova_lista
Si vede già da subito che il numero di righe è stato nettamente ridotto e tutta la struttura sintattica del precedente codice è stata ridotta grazie all’uso delle mappature di python unitamente al nostro filtro. In pratica la nostra nuova riga di codice si occupa di ciclare gli elementi nella lista (mediante il ciclo for) e di confrontare l’elemento ottenuto con il filtro desiderato (mediante if). Ovviamente se il confronto con il filtro risulta vero allora l’elemento viene mappato nella nuova lista con il risultato di ottenere un array contenente i dati voluti.
Scrivere del buon codice significa ottenere, alla fine del nostro lavoro, un listato più pulito e quindi più semplice da correggere in caso di errori. In questo caso abbiamo visto come sia semplice adoperare le liste in maniera molto più fluida e sicuramente più pulita.
Condividi o piango:
Flattr the authorShare on LinkedInTweet about this on TwitterShare on RedditShare on FacebookShare on Google+Pin on PinterestShare on Tumblr