Filtrage de listes en Python

Dans ce billet, nous allons discuter de trois méthodes de filtrage de listes en Python. Plus précisément, nous allons parcourir comment utiliser la compréhension de liste, les expressions génératrices et la méthode intégrée ‘filter()’ pour filtrer des listes en python.

Démarrons!

Supposons que nous avons des données dans une liste et que nous voulons extraire des valeurs ou réduire la liste en fonction de certains critères. Plus précisément, considérons la liste suivante qui contient une liste sur les frais médicaux avec quelques valeurs manquantes :

medical_charges = 
print(medical_charges)
.

Pour commencer, nous pouvons utiliser la compréhension de liste pour filtrer les valeurs ‘None’ :

medical_charges = 
print(medical_charges)

.

Nous pouvons également convertir les éléments de la liste en entiers en modifiant légèrement la compréhension de la liste :

medical_charges = 
print(medical_charges)

.

En convertissant chaque élément en un nombre entier, nous pouvons également filtrer en fonction de la magnitude de chaque nombre entier. Supposons que nous voulions garder les frais supérieurs ou égaux à 500 $, nous pouvons écrire la compréhension de liste suivante :

medical_charges = 
print(medical_charges)

.

FILTRAGE À L’AIDE DE GÉNÉRATEURS

Si nous avons affaire à une quantité importante de données, ce qui est souvent le cas avec les dossiers médicaux, nous pouvons filtrer de manière itérative en utilisant une expression de générateur. Si nous voulons convertir notre liste originale en utilisant une expression de générateur, nous faisons ce qui suit :

charges = (int(n) for n in medical_charges if n != None)
print(charges)

.

La principale différence de syntaxe, par rapport à la compréhension des listes, étant l’utilisation de parenthèses au lieu de crochets. Nous pouvons maintenant itérer sur le générateur :

for charge in charges:
print(charge)
.

FILTRAGE UTILISATION DES MÉTHODES ‘LIST()’ ET ‘FILTER()’

Il arrive parfois que les critères de filtrage ne puissent pas être exprimés facilement à l’aide de la compréhension de liste ou des expressions du générateur. Prenons l’exemple de la conversion de notre liste originale de frais médicaux à valeur de chaîne en nombres entiers et de la suppression des valeurs manquantes :

medical_charges = 

Nous pouvons définir une fonction qui prend une liste et tente de convertir chaque élément en un nombre entier. Lorsque la conversion ne jette aucune erreur, nous retournons true. Lorsque la conversion jette une erreur de valeur, nous utilisons une instruction except pour attraper l’erreur et retourner false:

def convert_and_filter(input_list):
try:
int(input_list)
return True
except ValueError:
return False

Nous pouvons ensuite utiliser les méthodes intégrées ‘filter()’ et ‘list()’. La fonction ‘filter()’crée un itérateur et la méthode ‘list()’ nous permet de créer une liste de résultats:

charges = list(filter(convert_and_filter, medical_charges))
print(charges)

Je m’arrête ici mais n’hésitez pas à jouer avec les exemples ci-dessus. Par exemple, vous pouvez essayer de modifier les conditions de filtrage dans l’exemple de compréhension de liste pour n’inclure que les frais inférieurs ou égaux à 500 $.

CONCLUSIONS

Pour résumer, nous avons abordé dans ce billet quatre méthodes de filtrage de liste en Python. Nous avons abordé la compréhension des listes qui est utile pour sa lisibilité. Nous avons également abordé les expressions génératrices que nous utilisons si nous voulons éviter de générer de gros résultats à partir de grands ensembles de données. Enfin, nous avons abordé l’utilisation des méthodes intégrées  » filter()  » et  » list() « , ainsi que d’une fonction personnalisée, pour filtrer les listes. J’espère que vous avez trouvé cet article utile/intéressant. Le code de ce billet est disponible sur GitHub. Merci de votre lecture!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *