2023-05-31 13:51 Temps de lecture : 9 min

Comment filtrer la liste en Python de la bonne façon pour tirer le meilleur parti de vos données

Manipulation et Filtrage de Listes en Python: Guide Complet

En Python, les listes se présentent comme un outil fondamental pour la gestion de collections de données ordonnées. Ces structures, intrinsèquement modifiables, permettent de stocker divers types d'éléments, accessibles via un index débutant à zéro. Cette caractéristique d'indexation autorise la présence de doublons, tout en offrant la flexibilité d'intégrer des données hétérogènes. Les éléments sont délimités par des virgules et l'ensemble est encadré de crochets.

Considérez les illustrations suivantes:

        # Liste homogène de chaînes de caractères
        couleurs = ['Rouge', 'Orange', 'Jaune', 'Vert', 'Bleu', 'Indigo', 'Violet']

        # Liste hétérogène avec des chaînes et des nombres
        films = ['Transformers', 2012, 'Avengers', 300]

        # Liste contenant des doublons
        utilisateurs = ['Jean', 'Marie', 'Élisabeth', 'Jean']
    

Les listes, de par leur polyvalence, se prêtent à de multiples manipulations, notamment le filtrage. Cette opération consiste à extraire des sous-ensembles de données répondant à des critères spécifiques.

Pourquoi le Filtrage de Listes est Indispensable

Le filtrage permet de cibler précisément les informations pertinentes au sein d'une liste. Imaginez une liste de nombres, où seuls les nombres pairs vous intéressent. Le filtrage permet d'isoler ces nombres en appliquant un critère de divisibilité par deux. Cette technique est essentielle pour l'analyse et la manipulation de données.

Le filtrage intervient dans plusieurs cas:

  • Validation des données: Assurer la conformité des données aux critères requis avant leur traitement. Par exemple, vérifier que les utilisateurs d'une liste ont bien un prénom et un nom.
  • Nettoyage des données: Éliminer les données indésirables ou non pertinentes, par exemple, des valeurs numériques dans une liste de noms.
  • Analyse des données: Se concentrer sur des sous-ensembles spécifiques pour identifier des tendances ou des schémas. Par exemple, filtrer des étudiants par genre, âge ou niveau pour une analyse ciblée.

En résumé, le filtrage offre un contrôle précis sur les données, améliorant la précision et la rapidité des traitements et analyses.

Méthodes de Filtrage de Listes

Plusieurs approches existent pour filtrer les listes en Python. Explorons-en quelques-unes:

Utilisation de la fonction filter()

La fonction filter(), native de Python, permet de parcourir un itérable et d'extraire les éléments satisfaisant une condition définie. Un itérable est un objet dont les éléments peuvent être parcourus un à un. La syntaxe de filter() est la suivante:

        filter(fonction, itérable)
    

où:

  • fonction est la fonction définissant la condition de filtrage.
  • itérable est l'objet à filtrer, souvent une liste.

La fonction filter() applique la fonction à chaque élément de l'itérable. Si l'élément satisfait la condition, il est sélectionné. filter() retourne un itérable, qui peut être converti en liste grâce à la fonction list().

Voici un exemple concret: filtrer une liste de nombres pour ne garder que ceux inférieurs à 50.

            # Liste de nombres
            nombres = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

            # Fonction de filtrage
            def est_inferieur_a_50(num):
                if num < 50:
                    return True
                else:
                    return False

            # Création de la liste filtrée
            nombres_filtres = list(filter(est_inferieur_a_50, nombres))
            print(nombres_filtres)
        

Ce code affichera: [15, 46, 24, 37]

Filtrage avec une boucle for

La boucle for est une structure de contrôle de flux qui permet de parcourir une séquence. Sa syntaxe générale est:

            for élément in itérable:
                # Bloc de code à exécuter pour chaque élément
        

Pour filtrer une liste, vous devrez ajouter une condition de filtrage au bloc de code, et une liste vide pour stocker les résultats.

Reprenons l'exemple des nombres inférieurs à 50, en utilisant une boucle for :

            nombres = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

            nombres_filtres = []

            for num in nombres:
                if num < 50:
                   nombres_filtres.append(num)

            print(nombres_filtres)
        

Ce code génère le même résultat: [15, 46, 24, 37]

Filtrage basé sur une autre liste

Il est possible de filtrer une liste en vérifiant si ses éléments sont présents dans une autre liste. Par exemple:

                lettres = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']

                voyelles = ['a', 'e', 'i', 'o', 'u']
            

On peut extraire les lettres qui ne sont pas des voyelles:

                lettres = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
                voyelles = ['a', 'e', 'i', 'o', 'u']

                non_voyelles = []

                for lettre in lettres:
                    if lettre not in voyelles:
                        non_voyelles.append(lettre)
                print(non_voyelles)
            

Le résultat est: ['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

Filtrage avec la compréhension de liste

La compréhension de liste est une manière concise de créer des listes. Elle permet de réduire le code utilisé pour créer une nouvelle liste à partir d'une autre en une seule ligne.

Sa syntaxe est:

                nouvelle_liste = [expression for élément in itérable if condition]
            

où:

  • nouvelle_liste est la liste résultante.
  • expression est l'opération appliquée à chaque élément.
  • élément est la variable représentant chaque élément de l'itérable.
  • itérable est la liste d'origine.
  • if condition est un filtre optionnel.

Appliquons cette approche au filtre précédent (lettres non-voyelles):

                lettres = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
                voyelles = ['a', 'e', 'i', 'o', 'u']

                non_voyelles = [lettre for lettre in lettres if lettre not in voyelles]
                print(non_voyelles)
            

Ce code produit le même résultat: ['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n'] avec une syntaxe plus compacte.

Conclusion

Le filtrage de listes est une opération courante et essentielle en Python pour travailler efficacement avec des données. Que ce soit pour la validation, le nettoyage, ou l'analyse de données, il est primordial de maîtriser ces différentes techniques. Les méthodes présentées - fonction filter(), boucle for, filtrage par une autre liste, et compréhension de liste - offrent chacune des solutions adaptées à divers scénarios. La compréhension de liste, en particulier, est à privilégier pour sa concision et son efficacité.

N'hésitez pas à consulter d'autres ressources pour approfondir votre connaissance de Python, par exemple sur l'utilisation des fonctions lambda.

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.