ConsigneListe des nombres pairs de 0 à 20 avec comprehension
On peut ajouter une condition if à la fin d'une list comprehension pour ne garder que certains éléments.
Syntaxe
[expression for variable in sequence if condition]Lecture : "je veux une liste qui contient expression pour chaque variable dans sequence, mais seulement SI condition est vraie".
Équivalent en boucle classique :
resultat = []for variable in sequence: if condition: resultat.append(expression)# Nombres pairs de 0 à 20[x for x in range(21) if x % 2 == 0]# → [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]# Notes au-dessus de 10notes = [8, 15, 3, 18, 12, 7][n for n in notes if n >= 10]# → [15, 18, 12]# Mots de plus de 4 lettresmots = ['si', 'python', 'or', 'data'][m for m in mots if len(m) > 4]# → ['python']L'expression à gauche peut transformer l'élément, le if à droite filtre :
# Carrés des nombres pairs[x ** 2 for x in range(10) if x % 2 == 0]# → [0, 4, 16, 36, 64]# Mots longs en majuscules[m.upper() for m in mots if len(m) > 3][x if x > 0 else 0 for x in nombres] # if/else À GAUCHE : remplace les négatifs par 0 (garde TOUS les éléments)[x for x in nombres if x > 0] # if À DROITE : filtre, garde seulement les > 0C'est la confusion la plus fréquente. Mémo : if seul à droite = filtre, if/else à gauche = expression conditionnelle.
Modulo (%) renvoie le reste. n % 2 == 0 signifie "n est pair".
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →