La fonction filter en Python
Qu’est-ce que la fonction native filter en Python ? Comment l’utiliser pour filter des itérables ? Découvrez tout sur cette fonction built-in en Python !
La fonction filter()
est une fonction intégrée qu’on utilise pour filtrer les éléments d’une séquence (comme une liste ou un tuple). Elle prend une condition sous la forme d’une fonction qui renvoie True ou False et renvoie un itérateur avec les éléments pour lesquels la fonction a retourné True
.
Pour filter une liste ou un autre type d’itérable en Python, on utilise la fonction native filter()
.
filter(fonction, iterable)
💡 Vous voulez en apprendre plus sur les fonctions comme
filter()
? J’ai écrit un article qui reprend toutes les fonctions natives en Python.
Par exemple, pour filter les personnes à la retraite, on utilise :
personnes = [18, 23, 42, 61, 88]
travailleurs = filter(lambda age: age <= 62, personnes)
print(list(travailleurs))
Ce qui donne :
[18, 23, 42, 61]
💡 Vous ne comprenez pas cet exemple à cause de l’expression
lambda
? Vous pouvez facilement comprendre cet exemple en lisant mon article sur les fonctions lambda.
Comment filter une liste en Python ?
La fonction filter prend 2 arguments : une fonction et un itérable.
filter(fonction, iterable)
- la fonction est une fonction que vous voulez lui passer, elle doit retourner une valeur
Truthy
ouFalsy
pour garder ou non L’élément dans la liste. - l’itérable est un objet Python de type
list
,tuple
,dict
,set
ou n’importe quel autre type d’itérable.
Par exemple, si on une liste de dictionnaire de personnes et qu’on veut garder juste les personnes majeures, on peut faire quelque chose comme ça :
personnes = [{
'nom': 'Bertrand',
'age': 32
}, {
'nom': 'François',
'age': 60
}, {
'nom': 'Thomas',
'age': 30
}, {
'nom': 'Loïc',
'age': 9
}]
majeurs = filter(lambda personne: personne['age'] >= 18, personnes)
print(list(majeurs))
Ce qui donne :
[{'nom': 'Bertrand', 'age': 32}, {'nom': 'François', 'age': 60}, {'nom': 'Thomas', 'age': 30}]
Comment filter une liste sans utiliser filter ?
Bien que la fonction native filter
soit un excellent moyen de filter des itérables, il existe d’autres types de filtrage en Python.
Voyons comment filtrer des listes sans utiliser la fonction filter
de deux autres manières !
Avec une boucle for
On peut filter une liste en utilisant une boucle for en Python. Il faudra créer une liste vide à laquelle on ajoute les éléments qui correspondent à nos critères de filtrage.
Par exemple, voici un bout de code pour ne garder que les nombres pairs d’une liste de nombres :
nombres = [1, 2, 3, 4, 5, 6, 7, 8, 9]
nombres_pairs = []
for nombre in nombres:
if nombre % 2 == 0:
nombres_pairs.append(nombre)
print(nombres_pairs)
Ce qui donne :
[2, 4, 6, 8]
Il est possible d’écrire ce bout de code de manière beaucoup plus “pythoniste” avec les compréhensions de listes, voyons ça ensemble avec cette autre manière de filter des éléments qui composent un itérable en python.
Avec une liste en compréhension
Une liste en compréhension est un manière pratique de créer des listes en une seule ligne.
Sa syntaxe est comme ça :
[element for element in liste if condition]
Par exemple, pour filter les nombres impaires d’une liste de nombres et ne garder que les nombres pairs, on peut avoir un code comme suit :
nombres = [1, 2, 3, 4, 5, 6, 7, 8, 9]
nombres_pairs = [nombre for nombre in nombres if nombre % 2 == 0]
print(nombres_pairs)
Ce qui donne :
[2, 4, 6, 8]
💡 Vous souhaitez en apprendre plus sur moyen pour filtrer des listes en Python ? Alors vous serez sûrement intéressé par mon article sur les listes en compréhension.
Je m'appelle Thomas, et je code depuis plus de 20 ans. Depuis ma sortie de la première promotion de l'École 42, j'ai conçu et développé des centaines d'applications et de sites web. Sur ce blog, je partage avec vous les stratégies les plus efficaces pour maîtriser l'art de coder et progresser rapidement.