Con la funzione filter() di Python è possibile filtrare un iterabile in base a una condizione specifica, creando così un nuovo iteratore composto solo dai valori che soddisfano tale condizione. Questa funzione può essere utilizzata anche con le stringhe o per eliminare i valori nulli.

Cos’è Python filter()?

La funzione filter() di Python permette di applicare una condizione a un iterabile e selezionare solo gli elementi che la soddisfano. Questi vengono poi riproposti come iteratore. La condizione è considerata soddisfatta se l’elemento non è “0” o “false”. Sebbene esistano altre opzioni per filtrare una lista o un dizionario, la funzione filter() di Python può essere utilizzata in modo particolarmente efficiente. Essa crea solo un oggetto che fa riferimento all’iterabile di partenza, fornendo la funzione specificata e un indice. Di conseguenza, 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 collaborazione per lavorare in team
  • Aggiornamenti automatici

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 restituisce 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 condizione specificata. Se la condizione è “vera”, l’elemento viene incluso nella nuova sequenza. Se l’elemento non soddisfa questa condizione, viene escluso. Nei prossimi paragrafi ti mostriamo come funziona questo processo con alcuni esempi pratici.

Esempio di Python filter()

Nel nostro primo esempio, utilizziamo una serie di numeri e vogliamo considerare 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

Ovviamente filter() funziona anche con le stringhe in Python. Nel seguente esempio istruiamo il sistema a tenere in considerazione 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 trasformato l’output in una tupla. La sintassi è la seguente:

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

Combinazione con lambda

È possibile combinare la funzione Python filter() con una funzione lambda. Si tratta di una funzione anonima utilizzata principalmente a livello locale. Nel nostro esempio, selezioniamo una sequenza di numeri e istruiamo il sistema a considerare 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

Dichiarando None come primo argomento di filter() di Python, il sistema viene istruito a filtrare solo i valori “falsy”. Il termine “falsy” si usa per descrivere valori che non sono veri o falsi secondo il principio booleano, ma che invece presentano un valore nullo. In linea di principio, sono quindi vuoti. Per il nostro esempio, selezioniamo un elenco di valori diversi. Si tratta di valori interi, vuoti o booleani. Quindi usiamo filter() di Python con None ed eliminiamo i valori che non soddisfano la nostra condizione. 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

Riconoscimento automatico del framework, staging semplificato e numerose funzioni: con Deploy Now di IONOS non hai a disposizione solo un’infrastruttura affidabile ma effettui il deployment della tua pagina web anche direttamente da GitHub. Seleziona la tariffa più adatta alle tue esigenze.

Hai trovato questo articolo utile?
Vai al menu principale