Con la funzione filter() di Python è possibile filtrare un iterabile in base a una con­di­zio­ne specifica, creando così un nuovo iteratore composto solo dai valori che sod­di­sfa­no tale con­di­zio­ne. Questa funzione può essere uti­liz­za­ta anche con le stringhe o per eliminare i valori nulli.

Cos’è Python filter()?

La funzione filter() di Python permette di applicare una con­di­zio­ne a un iterabile e se­le­zio­na­re solo gli elementi che la sod­di­sfa­no. Questi vengono poi ri­pro­po­sti come iteratore. La con­di­zio­ne è con­si­de­ra­ta sod­di­sfat­ta se l’elemento non è “0” o “false”. Sebbene esistano altre opzioni per filtrare una lista o un di­zio­na­rio, la funzione filter() di Python può essere uti­liz­za­ta in modo par­ti­co­lar­men­te ef­fi­cien­te. Essa crea solo un oggetto che fa ri­fe­ri­men­to all’iterabile di partenza, fornendo la funzione spe­ci­fi­ca­ta e un indice. Di con­se­guen­za, risulta occupare molto meno spazio rispetto ad altre opzioni.

Managed Nextcloud di IONOS Cloud
Lavora con il tuo team sul cloud
  • Massima sicurezza dei tuoi dati
  • Strumenti di col­la­bo­ra­zio­ne per lavorare in team
  • Ag­gior­na­men­ti au­to­ma­ti­ci

Sintassi e parametri

La sintassi di Python filter() si scrive così:

filter(function, iterable)
python

Python filter() presenta quindi due parametri:

  • function: questo argomento specifica una funzione che viene applicata a ogni elemento dell’iterabile e re­sti­tui­sce un valore booleano (“true” o “false”).
  • iterable: questo parametro specifica la sequenza che deve essere filtrata dalla funzione Python filter(). Può trattarsi di una lista specifica, di un set, un altro iterabile o una tupla di Python.

La funzione verifica ogni elemento dell’iterabile per la con­di­zio­ne spe­ci­fi­ca­ta. Se la con­di­zio­ne è “vera”, l’elemento viene incluso nella nuova sequenza. Se l’elemento non soddisfa questa con­di­zio­ne, viene escluso. Nei prossimi paragrafi ti mostriamo come funziona questo processo con alcuni esempi pratici.

Esempio di Python filter()

Nel nostro primo esempio, uti­liz­zia­mo una serie di numeri e vogliamo con­si­de­ra­re solo i valori superiori a 10. A questo scopo usiamo Python filter(). Il relativo codice si presenta così:

valori = [3, 7, 9, 11, 17, 24, 25, 38, 40, 42]
def funzione(x):
    return x > 10
numeri = filter(funzione, valori)
numeri_lista = list(numeri)
print(numeri_lista)
python

Come output otteniamo questa nuova lista:

[11, 17, 24, 25, 38, 40, 42]
python

La funzione Python filter() con stringhe

Ov­via­men­te filter() funziona anche con le stringhe in Python. Nel seguente esempio istruiamo il sistema a tenere in con­si­de­ra­zio­ne solo le vocali. Questo il relativo codice:

valori = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
def filtrare_vocale(letter):
    vocale = ['a', 'e', 'i', 'o', 'u']
    if letter in vocale:
        return True
    else:
        return False
vocale_filtrata = filter(filtrare_vocale, valori)
vocale = tupla(vocale_filtrata)
print(vocale)
python

Abbiamo tra­sfor­ma­to l’output in una tupla. La sintassi è la seguente:

('a', 'e', 'i')
python

Com­bi­na­zio­ne con lambda

È possibile combinare la funzione Python filter() con una funzione lambda. Si tratta di una funzione anonima uti­liz­za­ta prin­ci­pal­men­te a livello locale. Nel nostro esempio, se­le­zio­nia­mo una sequenza di numeri e istruiamo il sistema a con­si­de­ra­re solo i numeri pari. Il codice è il seguente:

numeri = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
nuovo_iteratore = filter(lambda x: (x % 2 == 0), numeri)
numeri_pari = list(nuovo_iteratore)
print(numeri_pari)
python

Otteniamo il seguente output:

[2, 4, 6, 8, 10]
python

La funzione filter() con None

Di­chia­ran­do None come primo argomento di filter() di Python, il sistema viene istruito a filtrare solo i valori “falsy”. Il termine “falsy” si usa per de­scri­ve­re valori che non sono veri o falsi secondo il principio booleano, ma che invece pre­sen­ta­no un valore nullo. In linea di principio, sono quindi vuoti. Per il nostro esempio, se­le­zio­nia­mo un elenco di valori diversi. Si tratta di valori interi, vuoti o booleani. Quindi usiamo filter() di Python con None ed eli­mi­nia­mo i valori che non sod­di­sfa­no la nostra con­di­zio­ne. Il relativo codice è questo:

valori = [1, 2, 3, 'x', 0, 4, True, False, 5]
nuovo_iteratore = filter(None, valori)
nuovi_valori = list(nuovo_iteratore)
print(nuovo_valore)
python

L’output è il seguente:

[1, 2, 3, 'x', 4, True, 5]
python

Eliminare stringhe vuote con Python filter()

Anche se desideri eliminare stringhe vuote, ti basterà usare Python filter(). Il relativo comando presenta questa sintassi:

frase = ['Questo', ' ', 'è', 'un', ' ', 'esempio', ' ']
frase = list(filter(None, frase))
print(frase)
python

Le stringhe vuote vengono eliminate dall’output, lasciando solo quelle con un valore. Il risultato appare quindi come segue:

['Questo', ' ', 'è', 'un', ' ', 'esempio', ' ']
python
Consiglio

Ri­co­no­sci­men­to au­to­ma­ti­co del framework, staging sem­pli­fi­ca­to e numerose funzioni: con Deploy Now di IONOS non hai a di­spo­si­zio­ne solo un’in­fra­strut­tu­ra af­fi­da­bi­le ma effettui il de­ploy­ment della tua pagina web anche di­ret­ta­men­te da GitHub. Seleziona la tariffa più adatta alle tue esigenze.

Vai al menu prin­ci­pa­le