Comment utiliser la fonction filter() en Python
Découvrez comment utiliser la fonction filter() de Python pour extraire des éléments des collections. Comparez le filtre avec les compréhensions de liste et les rappels lambda.
Aperçu
Le filtrage des données est une tâche essentielle dans la programmation d'applications. Vous devrez souvent effectuer une recherche dans une liste et extraire des éléments qui répondent à des critères spécifiques, tels que l'extraction d'utilisateurs actifs d'une base de données de profils ou le filtrage des nombres négatifs à partir des journaux de capteurs. Python fournit un outil fonctionnel intégré nommé « filter() » à cet effet.
La fonction `filter(function, iterable)` prend une fonction de filtrage et un itérable comme arguments. L'argument de la fonction doit renvoyer une valeur booléenne (« True » ou « False ») pour chaque élément. La fonction `filter()` évalue chaque élément, en conservant uniquement ceux qui sont évalués à `True`, et renvoie un objet itérateur (un objet `filter`) contenant les résultats.
Comme `map()`, `filter()` évalue les éléments paresseusement. Si vous avez besoin d'une liste standard immédiatement, vous convertissez la sortie en utilisant le constructeur `list()` : `list(filter(func, data))`. Si vous transmettez « Aucun » comme paramètre de fonction (par exemple, « filtre (Aucun, données) »), Python filtrera automatiquement tous les éléments faux, ce qui est un excellent raccourci pour effacer les valeurs vides.
Sortie de code et d'exécution
Ce script montre le filtrage des tableaux numériques, l'extraction des éléments du dictionnaire et la suppression des chaînes faussement vides avec 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']Mise en œuvre étape par étape
- Définissez une fonction qui accepte un élément et renvoie une valeur booléenne représentant les critères de filtre.
- Appelez filter(function, iterable) pour créer un itérateur paresseux de correspondances.
- Convertissez l'objet filtre résultant en une liste à l'aide de list(filter(...)) si vous devez manipuler les enregistrements.
- Passez None comme argument de fonction pour filtrer toutes les valeurs fausses (comme None, 0 et les chaînes vides).
Foire aux questions
Que se passe-t-il si la fonction passée à filter() ne renvoie pas de booléen ?
Python évalue la véracité de la valeur renvoyée. Si la valeur est évaluée à True dans un contexte booléen, l'élément est conservé.
Dois-je utiliser filter() ou une compréhension de liste ?
Une compréhension de liste avec une condition if (par exemple, [x for x in list if condition]) est souvent préférée pour des raisons de lisibilité, mais filter() est propre et très performant, en particulier lors de l'utilisation de fonctions intégrées existantes.
Sujets connexes
Apprenez à utiliser les fonctions lambda en Python. Maîtrisez les fonctions anonymes, les rappels en ligne et le tri des données de liste avec des clés lambda.
Comment utiliser la compréhension de liste en PythonApprenez à utiliser les compréhensions de listes en Python. Écrivez des boucles concises, appliquez des filtres conditionnels et créez des matrices avec une syntaxe visuelle claire.
Comment utiliser la fonction map() en PythonApprenez à utiliser la fonction map() de Python. Maîtrisez l'application de fonctions aux itérables sans écrire de boucles et comparez la carte avec les compréhensions de liste.
Ressources Python recommandées
Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.
Fonctions Python
Maîtrisez les fonctions Python. Apprenez à écrire du code réutilisable à l'aide de def, à définir des arguments, à renvoyer des valeurs et à comprendre la portée localement et globalement.
Aide-mémoire sur les fonctions du module mathématique Python
Guide de référence rapide pour la bibliothèque standard mathématique Python. Apprenez à utiliser les fonctions trigonométriques, logarithmiques, d'arrondi et arithmétiques.
Python vs JavaScript : quel langage de programmation est le meilleur ?
Une comparaison complète entre Python et JavaScript. Explorez les différences de syntaxe, les performances, les cas d'utilisation (backend et frontend) et des exemples de codage.