Avec la fonction filter() de Python, vous filtrez un itérable selon une condition spécifique et créez ainsi un nouvel itérateur qui ne contient que les valeurs vérifiées. Cela fonctionne aussi avec des chaînes de caractères ou pour supprimer les valeurs nulles.

Qu’est-ce que Python filter() ?

Avec la fonction Python filter(), vous pouvez appliquer une condition à un itérable et sélectionner uniquement les éléments qui satisfont cette condition. Ces éléments sont ensuite renvoyés sous forme d’itérateur. La condition est considérée comme remplie si elle n’est pas « 0 » ou « false ». Bien qu’il existe d’autres options pour filtrer par exemple une liste ou un dictionnaire, Python filter() peut être utilisé de manière particulièrement efficace. La fonction ne crée qu’un objet qui fait référence à l’itérable de départ et ne fournit que la fonction fournie et un index. Elle est ainsi beaucoup moins encombrante que les autres options.

Python Filter() Function : syntaxe et paramètres

La syntaxe de Python filter() se présente comme suit :

filter(function, iterable)
python

Python filter() a donc deux paramètres :

  • function : cet argument indique une fonction qui sera appliquée à chaque élément à l’intérieur de l’itérable. Il renvoie une valeur booléenne (« true » ou « false »).
  • iterable : ce paramètre indique la séquence qui doit être filtrée par la fonction Python filter(). Il peut s’agir par exemple d’une liste, d’un ensemble, d’une autre itérable ou d’un tuple Python.

La fonction vérifie donc que chaque élément de l’itérable remplit la condition. Si celle-ci est « true », l’élément est pris en compte pour la nouvelle séquence. Si l’élément ne remplit pas la condition, il n’est plus inclus dans la liste. Nous vous montrons le fonctionnement exact dans les paragraphes suivants à l’aide de quelques exemples pratiques.

Exemple pour Python filter()

Dans notre premier exemple, nous utilisons une série de nombres et nous voulons demander au système de ne prendre en compte que les valeurs supérieures à 10. Pour cela, nous utilisons Python filter(). Le code correspondant se présente ainsi :

values = [3, 7, 9, 11, 17, 24, 25, 38, 40, 42]
def function(x):
    return x > 10
numbers = filter(function, values)
list_numbers = list(numbers)
print(list_numbers)
python

Nous obtenons alors cette nouvelle liste :

[11, 17, 24, 25, 38, 40, 42]
python

La fonction Python filter() avec des chaînes de caractères

Bien sûr, filter() fonctionne aussi avec des chaînes de caractères Python (strings en anglais). Dans l’exemple suivant, nous indiquons au système de ne prendre en compte que les voyelles. Voici le code correspondant :

values = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
def vowels_filter(letter):
    vowels = ['a', 'e', 'i', 'o', 'u']
    if letter in vowels:
        return True
    else:
        return False
vowels_filtered = filter(vowels_filter, values)
vowels = tuple(vowels_filtered)
print(vowels)
python

Nous avons converti la sortie en un tuple. Elle ressemble à ceci :

('a', 'e', 'i')
python

Combinaison avec Lambda

Il est possible de combiner la fonction Python filter() avec une fonction Lambda ; il s’agit d’une fonction anonyme qui est surtout utilisée localement. Dans notre exemple, nous choisissons une séquence de nombres et demandons au système de ne prendre en compte que les nombres pairs. Voici le code :

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new_iterator = filter(lambda x: (x % 2 == 0), numbers)
even_numbers = list(new_iterator)
print(even_numbers)
python

Nous obtenons alors la sortie suivante :

[2, 4, 6, 8, 10]
python

La fonction filter() avec None

Si vous passez None comme premier argument à filter() de Python, le système reçoit l’instruction de ne filtrer que les valeurs « false ». Il s’agit de valeurs qui, selon le principe booléen, ne sont ni vraies (true) ni fausses (false), mais qui ont au contraire une valeur nulle ; elles sont donc en principe vides. Pour notre exemple, nous choisissons une liste de valeurs différentes. Celles-ci sont des valeurs entières, vides ou booléennes. Nous utilisons ensuite Python filter() avec None et trions ainsi les valeurs qui ne remplissent pas notre condition. Voici le code approprié :

values = [1, 2, 3, 'x', 0, 4, True, False, 5]
new_iterator = filter(None, values)
new_values = list(new_iterator)
print(news_values)
python

La sortie est alors la suivante :

[1, 2, 3, 'x', 4, True, 5]
python

Supprimer les chaînes vides avec Python filter()

Si vous souhaitez également supprimer des chaînes vides, le plus simple est d’utiliser Python filter(). La commande correspondante pourrait par exemple ressembler à ceci :

sentence = ['This', ' ', 'is', ' ', 'an', ' ', 'example', ' ']
sentence = list(filter(None, sentence))
print(sentence)
python

Pour la sortie, les chaînes vides sont supprimées et seules les chaînes avec une valeur sont prises en compte. Cela ressemble à ceci :

"[This, 'is', 'an', 'example']"
python
Conseil

Détection automatique du framework, environnement de simulation et nombreuses autres fonctions : avec Deploy Now de IONOS, les résultats sont automatiquement déployés sur une infrastructure fiable. Choisissez le tarif le plus adapté à vos besoins !

Cet article vous a-t-il été utile ?
Aller au menu principal