Les compréhensions de liste en Python sont des outils puissants qui permettent de créer et de manipuler des listes de manière concise et lisible.
Dans cet article, nous allons explorer le concept de compréhension de liste, ses avantages, et comment l'utiliser efficacement dans vos projets Python.
Qu'est-ce qu'une compréhension de liste ?
Une compréhension de liste est une expression compacte pour construire une nouvelle liste en appliquant une fonction à chaque élément d'une autre liste ou d'un autre itérable. La syntaxe générale d'une compréhension de liste est la suivante :
[expression for item in iterable if condition]
Où :
-
expressionest l'opération ou la fonction à appliquer à chaque élément de l'itérable. -
itemest une variable temporaire qui représente chaque élément de l'itérable. -
iterableest la liste ou l'objet itérable dont on souhaite traiter les éléments. -
conditionest une condition optionnelle pour filtrer les éléments de l'itérable.
Supposons que nous ayons une liste de nombres et que nous voulions créer une nouvelle liste contenant les carrés de ces nombres. Voici comment nous pourrions utiliser une compréhension de liste pour accomplir cela :
nombres = [1, 2, 3, 4, 5] carres = [x**2 for x in nombres] print(carres) # Résultat : [1, 4, 9, 16, 25]
Dans cet exemple, x**2 est l'expression qui calcule le carré de chaque élément, et x est la variable temporaire qui représente chaque élément de la liste nombres.
Utilisation de conditions
Il est possible d'ajouter une condition pour filtrer les éléments de la liste d'entrée. Par exemple, si nous voulons obtenir les carrés des nombres pairs uniquement, nous pouvons ajouter une condition if comme suit :
nombres = [1, 2, 3, 4, 5] carres_pairs = [x**2 for x in nombres if x % 2 == 0] print(carres_pairs) # Résultat : [4, 16]
Dans cet exemple, la condition x % 2 == 0 vérifie si un nombre est pair.
Avantages des compréhensions de liste en général
-
Lisibilité : Les compréhensions de liste rendent le code plus lisible et compréhensible en évitant l'utilisation de boucles
foretifimbriquées. -
Concision : Elles permettent d'écrire des opérations complexes sur les listes en une seule ligne de code.
-
Performance : Les compréhensions de liste sont généralement plus rapides que les boucles for traditionnelles, car elles sont optimisées pour les opérations sur les listes.
Remplacement de map et filter par les compréhensions de liste
Les fonctions intégrées map et filter en Python étaient traditionnellement utilisées pour manipuler des listes, mais leur usage est maintenant souvent remplacé par des compréhensions de liste, plus lisibles et intuitives.
Exemple avec map
Voici comment transformer une liste avec la fonction map :
nombres = [1, 2, 3, 4, 5] carres = list(map(lambda x: x**2, nombres)) print(carres) # Résultat : [1, 4, 9, 16, 25] # Équivalent à cette compréhension de liste carres = [x**2 for x in nombres]
Exemple avec filter
Voici comment filtrer une liste avec la fonction filter :
nombres = [1, 2, 3, 4, 5] nombres_pairs = list(filter(lambda x: x % 2 == 0, nombres)) print(nombres_pairs) # Résultat : [2, 4] # Équivalent à cette compréhension de liste nombres_pairs = [x for x in nombres if x % 2 == 0]
Pourquoi préférer les compréhensions de liste à map et filter ?
-
Lisibilité : Les compréhensions de liste sont souvent plus simples et claires à lire et à écrire que les expressions utilisant map et filter.
-
Performance : Elles offrent souvent une légère amélioration en termes de performances.
-
Polyvalence : Les compréhensions de liste permettent facilement de combiner transformation et filtrage en une seule expression, contrairement à map et filter qui nécessitent une combinaison plus complexe.
Aujourd'hui, il est généralement recommandé d'utiliser les compréhensions de liste pour leur clarté et leur efficacité dans le code Python moderne.