Aller au contenu

Filtre par longueur⚓︎

On dispose d'une liste de prénoms, et on s'intéresse à ceux d'une longueur donnée.

Compléter la fonction filtre_par_longueur afin qu'elle renvoie la liste des prénoms de la longueur souhaitée.

Cette fonction :

  • prend deux arguments : liste_prenoms, une liste de prénoms et longueur, un entier naturel ;
  • renvoie la liste des prénoms de liste_prenoms dont la longueur est égale à longueur.

On prendra soin de renvoyer les prénoms dans leur ordre d'apparition dans la liste initiale.

Exemples

🐍 Console Python
>>> filtre_par_longueur(['Anne', 'Francky', 'Charles', 'Léa', 'Nicolas'], 7)
['Francky', 'Charles', 'Nicolas']
>>> filtre_par_longueur(['Anne', 'Francky', 'Charles', 'Léa', 'Nicolas'], 3)
['Léa']
>>> filtre_par_longueur(['Anne', 'Francky', 'Charles', 'Léa', 'Nicolas'], 10)
[]
###
# Testsbksl-nlprenoms = ["Anne", "Francky", "Charles", "Léa", "Nicolas"]bksl-nlassert filtrepy-undparpy-undlongueur(prenoms, 7) == ["Francky", "Charles", "Nicolas"]bksl-nlassert filtrepy-undparpy-undlongueur(prenoms, 3) == ["Léa"]bksl-nlassert filtrepy-undparpy-undlongueur(prenoms, 10) == []bksl-nlbksl-nl# Tests supplémentairesbksl-nlbksl-nlautres = ["CAB", "AB", "ABC", "A" py-str 30, "B" py-str 30]bksl-nlassert filtrepy-undparpy-undlongueur(autres, 3) == ["CAB", "ABC"]bksl-nlassert filtrepy-undparpy-undlongueur(autres, 30) == ["A" py-str 30, "B" py-str 30]bksl-nlbksl-nl 5/5

def filtrepy-undparpy-undlongueur(listepy-undprenoms, ...):bksl-nl resultat = []bksl-nl for prenom in ...:bksl-nl if ... == longueur:bksl-nl resultat.append(...)bksl-nl return ...bksl-nlbksl-nlbksl-nl# Testsbksl-nlprenoms = ['Anne', 'Francky', 'Charles', 'Léa', 'Nicolas']bksl-nlassert filtrepy-undparpy-undlongueur(prenoms, 7) == ['Francky', 'Charles', 'Nicolas']bksl-nlassert filtrepy-undparpy-undlongueur(prenoms, 3) == ['Léa']bksl-nlassert filtrepy-undparpy-undlongueur(prenoms, 10) == []bksl-nlbksl-nldef filtrepy-undparpy-undlongueur(listepy-undprenoms, longueur):bksl-nl resultat = []bksl-nl for prenom in listepy-undprenoms:bksl-nl if len(prenom) == longueur:bksl-nl resultat.append(prenom)bksl-nl return resultatbksl-nlbksl-nlbksl-nl# Testsbksl-nlprenoms = ["Anne", "Francky", "Charles", "Léa", "Nicolas"]bksl-nlassert filtrepy-undparpy-undlongueur(prenoms, 7) == ["Francky", "Charles", "Nicolas"]bksl-nlassert filtrepy-undparpy-undlongueur(prenoms, 3) == ["Léa"]bksl-nlassert filtrepy-undparpy-undlongueur(prenoms, 10) == []bksl-nlbksl-nl

A

On pourrait aussi utiliser une liste en compréhension :

🐍 Script Python
def filtre_par_longueur(liste_prenoms, longueur):
    return [prenom for prenom in liste_prenoms if len(prenom) == longueur]

Il est aussi possible d'utiliser un style fonctionnel

🐍 Script Python
def filtre_par_longueur(liste_prenoms, longueur):
    def valide(prenom):
        return len(prenom) == longueur

    return list(filter(valide, liste_prenoms))

Z