Intermédiaire
🧠 Fondamentaux
20 XP
0 personnes ont réussi
Déléguer avec yield from
Parfois, un générateur a besoin de produire les valeurs d'un autre itérable. Tu pourrais écrire une boucle for avec yield dedans :
def mon_generateur():
for x in autre_iterable:
yield x
Mais Python propose un raccourci élégant : yield from. Ca fait exactement la même chose en une seule ligne :
def mon_generateur():
yield from autre_iterable
C'est particulièrement utile pour combiner plusieurs sources de données dans un seul générateur.
Écris un générateur aplatir(listes) qui prend une liste de listes et produit tous les éléments un par un, en aplatissant la structure.
Exemple :
list(aplatir([[1, 2], [3, 4], [5]])) renvoie [1, 2, 3, 4, 5]
list(aplatir([[], [1], []])) renvoie [1]
Tests (3/4)
Aplatir 3 listes
assert list(aplatir([[1, 2], [3, 4], [5]])) == [1, 2, 3, 4, 5]
Listes vides
assert list(aplatir([[], [1], []])) == [1]
Liste vide
assert list(aplatir([])) == []
+ 0 tests cachés
Solution officielle
def aplatir(listes):
for sous_liste in listes:
yield from sous_liste