Come utilizzare la funzione filter() in Python
Scopri come utilizzare la funzione filter() di Python per estrarre elementi dalle raccolte. Confronta il filtro con le comprensioni degli elenchi e i callback lambda.
Panoramica
Il filtraggio dei dati è un compito fondamentale nella programmazione delle applicazioni. Spesso dovrai cercare in un elenco ed estrarre elementi che soddisfano criteri specifici, come estrarre gli utenti attivi da un database di profili o filtrare i numeri negativi dai log dei sensori. Python fornisce uno strumento funzionale integrato chiamato `filter()` per questo scopo.
La funzione `filter(function, iterable)` accetta una funzione di filtro e un iterable come argomenti. L'argomento della funzione deve restituire un valore booleano ("Vero" o "Falso") per ciascun elemento. La funzione "filter()" valuta ogni elemento, conservando solo quelli che valutano "True" e restituisce un oggetto iteratore (un oggetto "filter") contenente i risultati.
Come `map()`, `filter()` valuta gli elementi in modo pigro. Se hai bisogno immediatamente di un elenco standard, esegui il cast dell'output utilizzando il costruttore `list()`: `list(filter(func, data))`. Se passi `None` come parametro della funzione (ad esempio, `filter(None, data)`), Python filtrerà automaticamente tutti gli elementi che sono falsi, che è un'ottima scorciatoia per cancellare i valori vuoti.
Codice e output di esecuzione
Questo script dimostra il filtraggio di array numerici, l'estrazione di elementi del dizionario e l'eliminazione di false stringhe vuote con filter().
numbers = [-5, -2, 0, 3, 8, -1]
# 1. Filter positive numbers using a lambda function
positives = list(filter(lambda x: x > 0, numbers))
print("Positives only:", positives)
# 2. Filter list of strings by character length
words = ["cat", "elephant", "dog", "giraffe"]
long_words = list(filter(lambda w: len(w) > 4, words))
print("Words longer than 4 chars:", long_words)
# 3. Shorthand: Remove all falsy values from a list by passing None
mixed_data = ["hello", "", "world", None, False, "active"]
clean_data = list(filter(None, mixed_data))
print("Falsy values removed:", clean_data)Positives only: [3, 8]
Words longer than 4 chars: ['elephant', 'giraffe']
Falsy values removed: ['hello', 'world', 'active']Implementazione passo dopo passo
- Definire una funzione che accetta un elemento e restituisce un valore booleano che rappresenta i criteri di filtro.
- Chiama filter(function, iterable) per creare un iteratore pigro di corrispondenze.
- Trascina l'oggetto filtro risultante in un elenco utilizzando list(filter(...)) se è necessario manipolare i record.
- Passa None come argomento della funzione per filtrare tutti i valori falsi (come None, 0 e stringhe vuote).
Domande frequenti
Cosa succede se la funzione passata a filter() non restituisce un valore booleano?
Python valuta la veridicità del valore restituito. Se il valore restituisce True in un contesto booleano, l'elemento viene mantenuto.
Dovrei usare filter() o una comprensione di elenco?
Una comprensione dell'elenco con una condizione if (ad esempio, [x for x in list if condition]) è spesso preferita per la leggibilità, ma filter() è pulito e altamente performante, specialmente quando si utilizzano funzioni integrate esistenti.
Argomenti correlati
Scopri come utilizzare le funzioni lambda in Python. Padroneggia funzioni anonime, callback in linea e dati di elenchi di ordinamento con chiavi lambda.
Come utilizzare la comprensione delle liste in PythonScopri come utilizzare la comprensione delle liste in Python. Scrivi loop concisi, applica filtri condizionali e crea matrici con una sintassi visiva pulita.
Come utilizzare la funzione map() in PythonScopri come utilizzare la funzione map() di Python. Padroneggia l'applicazione di funzioni agli iterabili senza scrivere cicli e confronta la mappa con la comprensione dell'elenco.
Risorse Python consigliate
Espandi le tue conoscenze con tutorial interattivi, foglietti illustrativi e confronti di codici correlati.
Funzioni Python
Padroneggiare le funzioni Python. Scopri come scrivere codice riutilizzabile utilizzando def, definire argomenti, restituire valori e comprendere l'ambito a livello locale e globale.
Foglio informativo sulle funzioni del modulo matematico Python
Guida di riferimento rapido per la libreria standard matematica di Python. Impara come utilizzare le funzioni trigonometriche, logaritmiche, di arrotondamento e aritmetiche.
Python vs JavaScript: quale linguaggio di programmazione è il migliore?
Un confronto completo tra Python e JavaScript. Esplora le differenze di sintassi, le prestazioni, i casi d'uso (backend e frontend) ed esempi di codifica.