Que sont les compréhensions en Python ?
En Python, les compréhensions sont des syntaxes pour écrire des boucles for en une seule ligne.
Il existe plusieurs types de compréhensions en Python applicables sur les itérables :
- Les compréhensions de liste
- Les compréhensions de dictionnaire
- Les compréhensions de set
1. Les compréhensions de liste
On peut générer une nouvelle liste à partir d’une autre avec les compréhensions de liste en Python. On utilise la syntaxe ci-dessous pour l’utiliser :
comprehension_liste = [expression for variable in iterable if condition]
Par exemple, pour générer une liste de nombres au carré à partir d’une liste de nombre :
[n ** 2 for n in [1, 2, 3, 4, 5]]
Ce qui donne :
[1, 4, 9, 16, 25]
💡 Vous voulez en apprendre plus sur cette syntaxe pour construire des listes en Python ? Alors mon article Comment utiliser les listes en compréhension ? vous intéressera sûrement !
2. Dictionnaire en compréhension python
On peut aussi générer des dictionnaires avec les compréhensions en Python. On met notre compréhension entre des accolades et on récupère la clé et la valeur dans un tuple à chaque passage dans la boucle.
La syntaxe d’un dictionnaire par compréhension est la suivante :
comprehension_dictionnaire = {cle: valeur for (cle, valeur) in iterable if condition}
Par exemple, pour avoir un dictionnaire qui a comme clé un nombre et comme valeur ce nombre mis à la puissance 2 (carré) :
{n: n ** 2 for n in [1, 2, 3, 4, 5]}
Ce qui donne :
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
3. Set en compréhension python
En Python, un set
est une sorte de liste sans doublon. On utilise les accolades pour en créer.
On peut utiliser les compréhensions pour générer des set
en une seule ligne en mettant la compréhensions entre crochets, avec une boucle et éventuellement une condition.
Voici sa syntaxe des comprehension en set :
comprehension_set = {expression for variable in iterable if condition}
Voyons d’abord comment on construit un set avec une boucle for classique :
nombres = [1, 3, 1, 2, 2, 5, 6, 7, 9, 3, 4, 7, 3, 2, 1]
set_avec_nombres_impairs = set()
for nombre in nombres:
if nombre % 2 == 1:
set_avec_nombres_impairs.add(nombre)
print(set_avec_nombres_impairs)
Ce qui donnera un set avec les nombres impairs :
{1, 3, 5, 7, 9}
On peut obtenir le même résultat en utilisant une compréhension par set avec :
nombres = [1, 3, 1, 2, 2, 5, 6, 7, 9, 3, 4, 7, 3, 2, 1]
set_avec_nombres_impairs = {nombre for nombre in nombres if nombre % 2 == 1}
print(set_avec_nombres_impairs)
Ou en une ligne :
print({nombre for nombre in [1, 3, 1, 2, 2, 5, 6, 7, 9, 3, 4, 7, 3, 2, 1] if nombre % 2 == 1})
Et on obtiendra bien notre set avec les nombres impairs uniques :
{1, 3, 5, 7, 9}
Je m'appelle Thomas, et je code depuis plus de 20 ans. Depuis ma sortie de la première promotion de l'École 42, j'ai conçu et développé des centaines d'applications et de sites web. Sur ce blog, je partage avec vous les stratégies les plus efficaces pour maîtriser l'art de coder et progresser rapidement.