Menu
Coddy logo textTech

La fonction Filter

Fait partie de la section Logique et flux du Journey Python de Coddy. Leçon 73 sur 78.

La fonction filter() prend deux éléments principaux :

  1. Une fonction (qui contient les instructions permettant de vérifier chaque élément)
  2. Une séquence d’éléments (comme une liste ou toute collection d’éléments)

Il examine chaque élément de votre séquence, un par un, et ne conserve que ceux qui réussissent le test de la fonction (lorsque la fonction renvoie True).

Par exemple :

def is_even(n):
    return n % 2 == 0

numbers = [1, 2, 3, 4, 5, 6]  # Ceci n'est qu'une liste de nombres
even_numbers = filter(is_even, numbers)
print(list(even_numbers))
# Sortie : [2, 4, 6]

Que s’est-il passé ici :

  • Nous avons une liste de nombres : [1, 2, 3, 4, 5, 6]
  • La fonction filter() prend chaque nombre, un à la fois
  • Elle fait passer chaque nombre dans notre fonction is_even
  • Si la fonction renvoie True, elle conserve ce nombre
  • Si la fonction renvoie False, elle élimine ce nombre

Vous pouvez imaginer cela comme une passoire :

  1. Le nombre 1 entre → is_even renvoie False → nombre rejeté
  2. Le nombre 2 entre → is_even renvoie True → nombre conservé
  1. Le nombre 3 entre → is_even retourne False → le nombre est rejeté Et ainsi de suite...

Vous pouvez également utiliser une fonction rapide d’une seule ligne (appelée lambda) au lieu de définir une fonction distincte :

numbers = [1, 2, 3, 4, 5, 6]
even_numbers = filter(lambda n: n % 2 == 0, numbers)
print(list(even_numbers))
# Sortie : [2, 4, 6]

La fonction filter() fonctionne avec toute collection d’éléments — pas seulement des nombres. Voici un exemple avec des chaînes de caractères :

words = ["apple", "banana", "cherry", "date"]
long_words = filter(lambda word: len(word) > 5, words)
print(list(long_words))
# Sortie : ["banana", "cherry"]
challenge icon

Défi

Facile

Créez une fonction nommée get_long_strings qui prend une liste de chaînes de caractères strings comme argument. La fonction doit utiliser la fonction filter() avec une fonction lambda pour sélectionner les chaînes dont la longueur est supérieure à 5. La fonction doit renvoyer une liste contenant les chaînes sélectionnées.

Essayez vous-même

def get_long_strings(strings):
    # Utilisez filter() avec une fonction lambda pour sélectionner les chaînes de longueur supérieure à 5
    # Remplacez la liste vide ci-dessous par cette expression
    long_strings = []
    
    # Retournez la liste des chaînes sélectionnées
    return list(long_strings)
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et flux

Entraînez-vous par vous-même : Compilateur Python en ligne