Que sont les compréhensions en Python ?

Article publié le Invalid Date et mis à jour le mercredi 3 avril 2024.

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}
Comment Coder

Je m'appelle Thomas. J'ai commencé à coder dans mon enfance. Depuis ma sortie de la première promo de l'École 42, j'ai développé des centaines d'applications et sites web. Sur ce blog, je vous donne les meilleurs conseils et astuces pour apprendre comment apprendre à coder efficacement.