Python – Les listes – Construction par compréhension – Cours

Voici un cours qui t’apprendra à créer des listes par compréhension.

Dès qu’un code sera afficher dans ce cours, écris-le dans Thonny et exécute-le.

Les listes en compréhension en Python sont une façon concise et élégante de créer des listes. Elles permettent de générer des listes en une seule ligne, en utilisant des expressions conditionnelles et des boucles intégrées dans une structure compacte.

Syntaxe de base avec range :

[nouvel_element for element in range(début, fin)]
  • nouvel_element : la transformation que vous souhaitez appliquer à chaque nombre généré par range.
  • for element in range(début, fin) : la boucle qui génère chaque nombre de la plage entre début et fin.

Exemple :

nombres = [n for n in range(10)]
print(nombres)  # Affiche : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Si vous voulez obtenir les carrés de chaque nombre de 0 à 9, vous pouvez appliquer une transformation (n**2) dans la compréhension de liste :

carres = [n**2 for n in range(10)]
print(carres)  # Affiche : [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

En ajoutant une condition, vous pouvez extraire uniquement les nombres pairs de 0 à 9 :

nombres_pairs = [n for n in range(10) if n % 2 == 0]
print(nombres_pairs)  # Affiche : [0, 2, 4, 6, 8]

De la même manière, vous pouvez créer une liste des nombres impairs de 0 à 9 :

nombres_impairs = [n for n in range(10) if n % 2 != 0]
print(nombres_impairs)  # Affiche : [1, 3, 5, 7, 9]

Vous pouvez utiliser range avec un pas pour obtenir des multiples de 3, par exemple :

multiples_de_3 = [n for n in range(0, 30, 3)]
print(multiples_de_3)  # Affiche : [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

Vous pouvez ajouter une condition if...else pour appliquer des transformations différentes en fonction d’une condition. Par exemple, créer une liste indiquant si chaque nombre est « pair » ou « impair » de 0 à 9 :

parite = ["pair" if n % 2 == 0 else "impair" for n in range(10)]
print(parite)  # Affiche : ['pair', 'impair', 'pair', 'impair', 'pair', 'impair', 'pair', 'impair', 'pair', 'impair']

En utilisant une double boucle, vous pouvez générer une table de multiplication sous forme de tuples (multiplicande, multiplicateur, produit) :

table_multiplication = [(i, j, i * j) for i in range(1, 4) for j in range(1, 4)]
print(table_multiplication)
# Affiche : [(1, 1, 1), (1, 2, 2), (1, 3, 3), (2, 1, 2), (2, 2, 4), (2, 3, 6), (3, 1, 3), (3, 2, 6), (3, 3, 9)]

Code traditionnel

nombres_pairs = []
for n in range(10):
    if n % 2 == 0:
        nombres_pairs.append(n)
print(nombres_pairs)  # Affiche : [0, 2, 4, 6, 8]

En compréhension de liste

nombres_pairs = [n for n in range(10) if n % 2 == 0]
print(nombres_pairs)  # Affiche : [0, 2, 4, 6, 8]

Avantages des Compréhensions de Liste

  • Lisibilité : Les compréhensions de liste permettent de créer des listes en une seule ligne, rendant le code plus lisible.
  • Performance : Elles sont souvent plus rapides que les boucles for traditionnelles.
  • Concision : Moins de lignes de code, sans compromettre la lisibilité.

La compréhension de liste avec range est un outil puissant pour générer des listes de valeurs en appliquant des transformations et des filtres facilement. Elle permet de simplifier les opérations basées sur des boucles, tout en restant concise et lisible. Il est aussi possible de l’utiliser à partir d’autres listes.