Intermédiaire
🧠 Fondamentaux
20 XP
0 personnes ont réussi
Générateur infini tronque
En Python, tu peux créer une source infinie de données avec while True et yield, puis en prendre juste ce dont tu as besoin avec itertools.islice(). C'est un pattern élégant utilisé pour les flux de données en temps réel, les séquences mathématiques, ou les identifiants auto-incrémentés.
Exemple : def entiers_naturels(): n = 0 while True: yield n n += 1
list(itertools.islice(entiers_naturels(), 5)) donne [0, 1, 2, 3, 4]
Écris une fonction génératrice puissances_de_deux() qui yield les puissances de 2 à l'infini (1, 2, 4, 8, 16, ...). Puis écris une fonction premieres_puissances(n) qui retourne les n premières en utilisant itertools.islice.
Exemple : premieres_puissances(5) donne [1, 2, 4, 8, 16]
import itertools
def puissances_de_deux():
val = 1
while True:
yield val
val *= 2
def premieres_puissances(n):
return list(itertools.islice(puissances_de_deux(), n))