Avec la fonction filter() de Python, vous filtrez un itérable selon une condition spé­ci­fique et créez ainsi un nouvel itérateur qui ne contient que les valeurs vérifiées. Cela fonc­tionne aussi avec des chaînes de ca­rac­tè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é­lec­tion­ner uni­que­ment les éléments qui satisfont cette condition. Ces éléments sont ensuite renvoyés sous forme d’itérateur. La condition est con­si­dé­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 dic­tion­naire, Python filter() peut être utilisé de manière par­ti­cu­liè­re­ment 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 en­com­brante que les autres options.

Python Filter() Function : syntaxe et pa­ra­mètres

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

filter(function, iterable)
python

Python filter() a donc deux pa­ra­mè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 fonc­tion­ne­ment exact dans les pa­ra­graphes 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 su­pé­rieures à 10. Pour cela, nous utilisons Python filter(). Le code cor­res­pon­dant 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 ca­rac­tères

Bien sûr, filter() fonc­tionne aussi avec des chaînes de ca­rac­tè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 cor­res­pon­dant :

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

Com­bi­nai­son 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 lo­ca­le­ment. Dans notre exemple, nous choi­sis­sons 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’ins­truc­tion 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 choi­sis­sons une liste de valeurs dif­fé­rentes. Celles-ci sont des valeurs entières, vides ou boo­léennes. Nous utilisons ensuite Python filter() avec None et trions ainsi les valeurs qui ne rem­plis­sent 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 cor­res­pon­dante pourrait par exemple res­sem­bler à ceci :

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

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

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

Détection au­to­ma­tique du framework, en­vi­ron­ne­ment de si­mu­la­tion et nom­breuses autres fonctions : avec Deploy Now de IONOS, les résultats sont au­to­ma­ti­que­ment déployés sur une in­fras­truc­ture fiable. Choi­sis­sez le tarif le plus adapté à vos besoins !

Aller au menu principal