Remplacez vos boucles de construction par des compréhensions expressives, pour transformer, filtrer et réindexer vos données.
Ouvrir cette leçon dans KodokonUne compréhension de liste condense le motif le plus fréquent de la programmation : construire une liste en transformant ou en filtrant une séquence. La syntaxe se lit comme une phrase : [expression for element in sequence if condition]. Même résultat qu'une boucle avec append, en une ligne déclarative que tout développeur Python reconnaît immédiatement.
prices = [12.0, 49.9, 5.5, 199.0]
with_tax = [round(p * 1.2, 2) for p in prices]
cheap = [p for p in prices if p < 50]
print(with_tax) # [14.4, 59.88, 6.6, 238.8]
print(cheap) # [12.0, 49.9, 5.5]La compréhension de dictionnaire suit la même logique avec la syntaxe {cle: valeur for ...}. Cas d'usage très courant en projet : réindexer une liste d'objets par leur identifiant, pour obtenir ensuite des recherches instantanées au lieu de reparcourir la liste à chaque besoin.
users = [
{"id": 7, "name": "Alice"},
{"id": 12, "name": "Bruno"},
{"id": 31, "name": "Chloe"},
]
by_id = {u["id"]: u["name"] for u in users}
print(by_id[12]) # Bruno
print(31 in by_id) # TrueDeux positions pour if, deux rôles différents. Placé après le for, il filtre : les éléments rejetés n'apparaissent pas dans le résultat. Placé avant le for, sous forme d'expression conditionnelle (a if condition else b), il choisit une valeur pour chaque élément : la liste garde alors la même longueur que la source.
scores = [45, 82, 67, 91]
labels = ["pass" if s >= 60 else "fail" for s in scores]
print(labels) # ['fail', 'pass', 'pass', 'pass']