# Python filter() Function : comment filtrer des itérables avec des conditions ?

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](https://www.ionos.fr/digitalguide/sites-internet/developpement-web/python-iterators/). 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 :

```python
filter(function, iterable)
```

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](https://www.ionos.fr/digitalguide/sites-internet/developpement-web/tuples-en-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 :

```python
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)
```

Nous obtenons alors cette nouvelle liste :

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

## 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](https://www.ionos.fr/digitalguide/sites-internet/developpement-web/python-string/) (*strings* en anglais). Dans l’exemple suivant, nous indiquons au système de ne prendre en compte que les voyelles. Voici le code correspondant :

```python
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)
```

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

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

## Combinaison avec Lambda

Il est possible de combiner la fonction Python `filter()` avec une [fonction Lambda](https://www.ionos.fr/digitalguide/sites-internet/developpement-web/fonctions-lambda-en-python/) ; 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 :

```python
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)
```

Nous obtenons alors la sortie suivante :

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

## 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é :

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

La sortie est alors la suivante :

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

## 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 :

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

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 :

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

Conseil Détection automatique du framework, environnement de simulation et nombreuses autres fonctions : avec [Deploy Now](https://www.ionos.fr/hebergement/deploy-now "Deploy Now » Déployez vos projets via GitHub | IONOS") de IONOS, les résultats sont automatiquement déployés sur une infrastructure fiable. Choisissez le tarif le plus adapté à vos besoins !


This is a markdown version of: [https://www.ionos.fr/digitalguide/sites-internet/developpement-web/fonction-python-filter/](https://www.ionos.fr/digitalguide/sites-internet/developpement-web/fonction-python-filter/) for AI/LLM consumption.