Anche la funzione filter() incorporata di Python è potente; per eseguire procedure di filtraggio dei dati su sequenze come elenchi, tuple e stringhe. La funzione filter() viene utilizzata per applicare una funzione a ciascun elemento di un iterabile (come una lista o una tupla) e restituire un altro iterabile contenente solo gli elementi per i quali la funzione restituisce True. In questo senso, filter() ci consente di filtrare gli elementi da un raggruppamento in base a determinate condizioni. Il primo argomento può essere None se la funzione non è disponibile e restituisce solo gli elementi che sono True.
Sintassi:
filter (function, iterable)
Parametri
funzione: È una funzione. Se impostato su Nessuno restituisce solo gli elementi che sono True.
Iterabile: Qualsiasi sequenza iterabile come lista, tupla e stringa.
Entrambi i parametri sono obbligatori.
Ritorno
Restituisce lo stesso restituito dalla funzione.
Vediamo alcuni esempi della funzione filter() per comprenderne la funzionalità.
Funzione Python filter() Esempio 1
Questo semplice esempio restituisce valori superiori a 5 utilizzando la funzione filtro. Vedere l'esempio seguente.
Codice
# Python filter() function example def filterdata(x): if x>5: return x # Calling function result = filter(filterdata,(1,2,6)) # Displaying result print(list(result))
Produzione:
[6]
Il codice definisce una funzione chiamata filterdata che accetta un singolo argomento x. In questa funzione, controlliamo assumendo che x sia maggiore di 5 e, a condizione che ciò sia vero, stampiamo x. Quindi chiamiamo la funzione filter(), passando filterdata come argomento principale e una tupla (1, 2, 6) come argomento successivo. La funzione filter() applica la funzione filterdata() a ogni elemento della tupla e restituisce un iteratore che contiene solo gli elementi che soddisfano la condizione x > 5. Infine, convertiamo l'iteratore in una lista utilizzando la funzione list() e stampare il risultato.
Di seguito sono riportati un paio di esempi aggiuntivi su come utilizzare il metodo filter() in Python:
Esempio 2:
Filtra le stringhe vuote da un elenco:
leggere i file json
Codice
la sessione è scaduta
# Python filter() function example strings = [ '', 'hello', '', 'world', '' ] # Using filter() to remove empty strings from the list result = list(filter(lambda x: x != '', strings)) # Printing the result print(result)
Produzione:
[ 'hello', 'world' ]
In questo esempio, la funzione lambda verifica se ogni stringa non è vuota testando presupponendo che sia equivalente alla stringa vuota (''). La funzione filter() restituisce un altro iterabile contenente solo le stringhe non vuote.
Esempio 3:
Filtra i numeri negativi da un elenco:
Codice
# Python filter() function example numbers = [ 1, -2, 3, -4, 5, -6 ] # Using filter() to remove negative numbers from the list result = list(filter(lambda x: x >= 0, numbers)) # Printing the result print(result)
Produzione:
[1, 3, 5]
In questo esempio, la funzione lambda verifica presupponendo che ciascun numero sia non negativo verificando nel caso in cui sia più prominente o equivalente a zero (0). La funzione filter() restituisce un altro iterabile contenente solo i numeri non negativi.
Esempio 4:
Filtra i duplicati da un elenco:
Codice
# Python filter() function example numbers = [ 1, 2, 3, 2, 4, 3, 5 ] # Using filter() to remove duplicate numbers from the list result = list(filter(lambda x: numbers.count(x) == 1, numbers)) # Printing the result print(result)
Produzione:
[ 1, 4, 5 ]
In questo esempio, la funzione lambda verifica nel caso in cui ciascun numero venga visualizzato una sola volta nell'elenco dei numeri contando quante volte viene visualizzato (numbers.count(x)) e testando nel caso in cui il conteggio sia equivalente a 1. La funzione filter() restituisce un altro iterabile contenente solo i numeri univoci.
Nota: è significativo che in Python 3, la funzione filter() restituisca un iterabile, e ciò implica che vuoi davvero cambiarlo completamente in un elenco (come mostrato negli esempi sopra) per coinvolgerlo come un elenco. Tuttavia, in Python 2, la funzione filter() restituisce ovviamente un elenco.
Conclusione:
Infine, la funzione filter() è un potente strumento per la manipolazione dei dati in Python. Filtrando un iterabile in base a una condizione predefinita, puoi separare rapidamente ed efficacemente i dati che desideri veramente. Puoi anche utilizzare filter() insieme ad altre funzioni Python per eseguire manipolazioni dei dati più complesse.