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

En Python, l’un des moyens les plus populaires de stocker des données séquentielles ou ordonnées consiste à utiliser des listes. Une liste en Python est une structure de données ordonnée, modifiable et intégrée qui est utilisée pour stocker une collection de données. Les éléments stockés dans une liste sont indexés à partir de zéro et les utilisateurs peuvent modifier le contenu d’une liste après sa création.

Le fait que les éléments d’une liste soient indexés permet le stockage d’éléments en double dans une liste. Les listes en Python peuvent également contenir des éléments de différents types de données. Les éléments d’une liste sont séparés par des virgules et placés entre crochets.

Voici des exemples de listes en Python :

# A list containing one data type - String
colors = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']

# A list containing multiple data types
movies = ['Transformers', 2012, 'Avengers', 300]

# A list with duplicate values
users = ['John', 'Mary', 'Elizabeth', 'John']

Les listes sont une structure de données très polyvalente et vous pouvez effectuer de nombreuses opérations sur les données stockées dans les listes. Une opération courante et utile effectuée sur les listes consiste à filtrer les données stockées dans la liste.

Pourquoi le filtrage des listes est important

Filtrer une liste signifie extraire des sous-ensembles spécifiques de données qui répondent à un critère donné. Par exemple, seuls les nombres pairs d’une liste contenant les nombres 1 à 10 nous intéressent. Pour extraire ces données de la liste, il suffit de filtrer la liste pour obtenir des nombres exactement divisibles par deux.

Le filtrage est particulièrement utile dans la manipulation et l’analyse des données car il permet de supprimer les éléments indésirables des listes, de créer de nouvelles listes contenant des éléments répondant à des critères donnés et d’extraire des données répondant à certaines conditions.

Certaines applications réelles des listes de filtrage incluent :

  • Validation des données – Lorsque vous travaillez avec une liste, vous souhaiterez peut-être travailler uniquement avec des données qui répondent à un critère donné. Par exemple, dans une liste d’utilisateurs, vous pourriez être intéressé par les utilisateurs ayant à la fois un prénom et un nom. Le filtrage peut vous permettre de vérifier et de valider les données de la liste avant de les traiter. De cette façon, vous évitez de travailler avec des données qui ne répondent pas à vos besoins.
  • Nettoyage des données – Étant donné que les listes peuvent stocker une variété de types de données, il n’est pas rare de trouver que les listes contiennent des données indésirables qui ne vous intéressent pas. Par exemple, dans une liste contenant des noms, vous pourriez ne pas être intéressé par les valeurs numériques dans la liste. Grâce au filtrage, vous pouvez supprimer les données indésirables.
  • Analyse des données – Le filtrage des données est particulièrement utile dans l’analyse des données car il vous permet de vous concentrer sur des sous-ensembles spécifiques de données, ce qui vous permet d’identifier facilement les modèles et les tendances. Par exemple, dans une liste d’étudiants, vous pouvez filtrer les étudiants masculins et féminins et utiliser le résultat dans l’analyse des données. Vous pouvez même filtrer en fonction de l’âge, du lieu et du niveau. Cela vous permet de tirer des conclusions plus utiles à partir de sous-ensembles spécifiques de données dans une liste

Le filtrage des listes est une fonction très utile car elle vous donne le contrôle sur les données stockées dans une liste vous permettant de ne travailler qu’avec les données qui vous intéressent.

Le ciblage de sous-ensembles spécifiques de données stockées dans une liste est très utile car il rationalise le traitement et l’analyse des données, ce qui rend les processus meilleurs, plus rapides et plus précis.

Utilisation de la fonction filter()

La fonction filter() est une fonction Python intégrée qui peut être utilisée pour parcourir un itérable tel qu’une liste, des tuples, un ensemble ou un dictionnaire et extraire des éléments de l’itérable qui satisfont une condition donnée.

Un Iterable en Python est un objet qui peut être bouclé à travers ses éléments un par un. L’itération dans un itérable renvoie les éléments de l’itérable un à la fois.

La syntaxe de la fonction de filtrage est la suivante :

filter(function, iterable)

function – une fonction Python qui contient la condition de filtrage

itérable – l’itérable qui va être filtré. Dans ce cas, nous utiliserons une liste.

La fonction filter() prend la fonction transmise et l’applique à chaque élément de l’itérable transmis, en testant la condition de filtrage par rapport à l’élément. Si l’élément satisfait la condition, c’est-à-dire qu’il renvoie le booléen vrai, qui sera sélectionné par la fonction filter(). S’il ne satisfait pas la condition, l’article n’est pas sélectionné.

La fonction filter() renvoie un itérable avec les éléments qui ont passé la condition de filtrage. Vous pouvez créer une nouvelle liste contenant les éléments qui ont passé la condition de filtrage en utilisant la fonction list().

Pour voir la fonction filter() en action, considérez la liste ci-dessous, qui est filtrée pour sélectionner des nombres inférieurs à 50 :

#A list of numbers
numbers = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

# function containing the filtering condition
def is_even(num):
   if num < 50:
      return True
   else:
      return False

# the function list() is used to create a list from the iterable
# returned by the filter() function
filtered_numbers = list(filter(is_even, numbers))
print(filtered_numbers)

Le code ci-dessus affiche le résultat suivant :

[15, 46, 24, 37]

Utilisation d’une boucle for

En Python, une boucle for est une instruction de flux de contrôle utilisée pour parcourir des structures de données séquentielles telles qu’une liste, des tuples, des chaînes et des tableaux. Une boucle for exécute à plusieurs reprises un bloc de code pour chaque élément d’une séquence.

La syntaxe générale d’une boucle for est la suivante :

for item in iterable:
    # Block of code to be executed for each item in the iterabele

élément – une variable représentant l’élément en cours de traitement dans une itération de la boucle

itérable – la séquence sur laquelle la boucle for itère. Dans ce cas, une liste

Pour filtrer une liste à l’aide d’une boucle for, nous devrons passer notre condition de filtrage dans la section du bloc de code à exécuter. De cette façon, chaque élément sera évalué pour voir s’il satisfait à une condition donnée.

Lorsque vous utilisez une boucle for pour filtrer une liste, vous devez également créer une liste vide dans laquelle vous ajouterez les valeurs qui satisfont votre condition de filtrage.

Pour voir cela en action, filtrons une liste de nombres pour obtenir des nombres inférieurs à 50 en utilisant une boucle for :

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

filtered_numbers = []

for num in numbers:
    if num < 50:
        # append() used to add a number that passes the condition
        # into filtered_numbers.
        filtered_numbers.append(num)

print(filtered_numbers)

Le code ci-dessus affiche le résultat suivant :

[15, 46, 24, 37]

Utiliser une autre liste

Vous pouvez filtrer une liste à l’aide d’une autre en vérifiant si un élément d’une liste que vous souhaitez filtrer apparaît dans une autre liste. Par exemple, considérons les deux listes suivantes

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

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

Dans la liste appelée lettres ci-dessus, nous pouvons déterminer quels éléments de la liste ne sont pas des voyelles en vérifiant si l’élément apparaît dans la liste des voyelles ou non. Si un élément n’apparaît pas dans la liste des voyelles, alors ce n’est pas une voyelle.

De cette façon, nous pouvons obtenir tous les caractères en lettres qui ne sont pas des voyelles. Pour ce faire, exécutez le code suivant :

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

not_vowel = []

for letter in letters:
    if letter not in vowels:
        not_vowel.append(letter)
print(not_vowel)

Le code ci-dessus imprime la sortie suivante, qui contient des caractères en lettres qui ne sont pas des voyelles.

['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

Utilisation de la compréhension de liste

En Python, la compréhension de liste offre une syntaxe plus courte, plus concise et plus propre pour créer une nouvelle liste à partir d’une liste existante. La compréhension de liste a la capacité de réduire les multiples lignes de code utilisées pour créer une nouvelle liste à partir d’une autre liste en utilisant une boucle for en une seule ligne.

En effet, lorsque vous utilisez la compréhension de liste, vous définissez et ajoutez des éléments à la nouvelle liste sur une seule ligne.

La syntaxe pour la compréhension de liste est la suivante :

new_list = [expression for element in iterable if condition]

new_list – une nouvelle liste contenant des éléments ajoutés par la compréhension de liste

expression – une opération qui sera appliquée à chaque élément de l’itérable

item – nom de la variable représentant l’élément actuellement actif dans l’itérable

itérable – un itérable à partir duquel les éléments seront sélectionnés.

si condition – une partie facultative dans laquelle une condition peut être ajoutée pour filtrer les éléments afin d’ajouter uniquement ceux qui satisfont à une condition donnée dans la nouvelle liste en cours de création.

Pour voir la compréhension de la liste en action et à quel point elle peut simplifier le processus de filtrage et de création d’une nouvelle liste, nous utiliserons la liste des lettres et des voyelles pour filtrer les éléments de la liste des lettres qui ne figurent pas dans la liste des voyelles. Pour ce faire, exécutez le code suivant :

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

# list comprehension
not_vowel = [letter for letter in letters if letter not in vowels]
print(not_vowel)

La sortie du code ci-dessus est illustrée ci-dessous :

['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

La sortie est similaire à l’exemple précédent, qui utilisait une boucle for pour filtrer une liste à l’aide d’une autre liste. Cependant, il utilise moins de lignes de code pour obtenir le même résultat.

Conclusion

Lorsque vous travaillez avec des données en Python, une opération courante que vous êtes tenu d’effectuer consiste à filtrer les données d’un itérable tel qu’une liste. Il s’agit d’une étape très utile dans l’analyse et le traitement des données car elle vous permet de ne travailler qu’avec des données pertinentes pour l’opération ou le traitement en cours.

Une structure de données séquentielle très populaire en Python est la liste. Si vous vous retrouvez à travailler avec une liste et que vous devez la filtrer, envisagez d’utiliser l’une des méthodes mises en évidence dans l’article.

Vous pouvez également lire comment utiliser les fonctions lambda en Python avec des exemples.