La funzione Python filter(): come filtrare iterabili in base a una condizione
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.
- 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)
pythonPython 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 Pythonfilter()
. 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)
pythonCome output otteniamo questa nuova lista:
[11, 17, 24, 25, 38, 40, 42]
pythonLa 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)
pythonAbbiamo trasformato l’output in una tupla. La sintassi è la seguente:
('a', 'e', 'i')
pythonCombinazione 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)
pythonOtteniamo il seguente output:
[2, 4, 6, 8, 10]
pythonLa 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)
pythonL’output è il seguente:
[1, 2, 3, 'x', 4, True, 5]
pythonEliminare 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)
pythonLe stringhe vuote vengono eliminate dall’output, lasciando solo quelle con un valore. Il risultato appare quindi come segue:
['Questo', ' ', 'è', 'un', ' ', 'esempio', ' ']
pythonRiconoscimento 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.