PaliSkill
Python avancé

Leçon 5 / 10 — Chapitre 5: Itérateurs, générateurs et context managers

Expressions génératrices

Une expression génératrice, déjà entrevue dans Python Intermédiaire (sum(x for x in liste)), est une compréhension entre parenthèses plutôt qu'entre crochets — elle produit ses valeurs une par une, comme une fonction génératrice, sans construire de liste en mémoire.

carres = (n * n for n in range(5))
print(type(carres))

for c in carres:
    print(c)

type(carres) affiche <class 'generator'> : (n * n for n in range(5)) crée un générateur, pas une liste — contrairement à [n * n for n in range(5)] (vu dans Python Intermédiaire), qui construit immédiatement une liste complète en mémoire.

Un générateur ne se parcourt qu'une seule fois : une fois épuisé par une boucle for ou converti en liste, le reparcourir ne produit plus rien.

carres = (n * n for n in range(3))
print(list(carres))
print(list(carres))

Ce code affiche [0, 1, 4], puis [] (liste vide) : le second list(carres) trouve le générateur déjà épuisé par le premier appel — contrairement à une liste, qui reste parcourable autant de fois qu'on le souhaite.

À vous de jouer : créez une expression génératrice, parcourez-la une première fois avec une boucle for, puis tentez de la reparcourir et observez le résultat.

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que la certification finale.

2 500 XOF / 3,81 € / 4,15 $

Débloquez les 87 leçons restantes de ce module

Votre paiement est vérifié avant l'activation de l'accès