Créer une liste en compréhension
Créez un compte gratuit pour suivre votre avancement et reprendre où vous avez laissé.
Créer un compteMéthode
Pour écrire une liste en compréhension, on utilise la syntaxe :
- Identifier l'expression qui décrit chaque élément de la liste (par exemple $n$, $n^2$, $3n+1$...).
- Choisir l'itérable parcouru par la boucle for : un range(...), une autre liste, une chaîne de caractères...
- Ajouter une condition avec if uniquement si certains éléments doivent être filtrés. Sinon, on omet cette partie.
- Encadrer le tout par des crochets [ ... ] pour obtenir la liste.
Liste des carrés des entiers de 1 à 10
On souhaite construire la liste $[1^2, 2^2, 3^2, \ldots, 10^2]$.
Étape 1 : L'expression qui décrit chaque élément est $n^2$, soit n**2 en Python.
Étape 2 : On parcourt les entiers de 1 à 10 avec range(1, 11) (la borne supérieure est exclue).
Étape 3 : Aucun filtrage : on conserve tous les entiers.
Étape 4 : On écrit la liste en compréhension :
carres = [ n**2 for n in range(1, 11) ]
print(carres) # affiche [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Multiples de 3 entre 10 et 50
On veut la liste des entiers $n$ tels que $10 \leqslant n \leqslant 50$ et $n$ est multiple de $3$.
Étape 1 : L'expression est simplement n (on garde l'entier tel quel).
Étape 2 : On parcourt range(10, 51) pour couvrir les entiers de 10 à 50 inclus.
Étape 3 : Un entier $n$ est multiple de 3 si $n \% 3 = 0$. On ajoute donc la condition if n % 3 == 0.
Étape 4 : On assemble :
multiples = [ n for n in range(10, 51) if n % 3 == 0 ]
print(multiples) # affiche [12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48]
Remarque
La liste en compréhension est équivalente à une boucle for classique avec append :
multiples = []
for n in range(10, 51) :
if n % 3 == 0 :
multiples.append(n)
Les deux écritures produisent exactement la même liste. La compréhension est simplement plus concise.
Attention
Trois erreurs fréquentes :
- Oublier les crochets : sans [ ... ] autour de l'expression, Python renvoie une erreur de syntaxe.
- Confondre la place de if : la condition de filtrage se place après la boucle for, pas avant (ce serait un if/else différent).
- Confondre $=$ et $==$ dans la condition : pour tester l'égalité, on utilise == (double signe), jamais = seul.