Créer un générateur
Dans les exercices précédents, vous avez surtout écrit des expressions génératrices en utilisant la syntaxe des compréhensions. Pouvoir réutiliser cette syntaxe pour des expressions génératrices vous a grandement facilité la tâche !
Rappelez-vous maintenant, comme vu dans la vidéo, qu’il n’existe pas seulement des expressions génératrices, mais aussi des fonctions génératrices. Les fonctions génératrices sont des fonctions qui, comme les expressions génératrices, produisent une série de valeurs au lieu de renvoyer une valeur unique. Une fonction génératrice se définit comme une fonction classique, mais chaque fois qu’elle produit une valeur, elle utilise le mot-clé yield au lieu de return.
Dans cet exercice, vous allez créer une fonction génératrice dont le fonctionnement est similaire à l’expression génératrice définie dans l’exercice précédent :
lengths = (len(person) for person in lannister)
Cet exercice fait partie du cours
Boîte à outils Python
Instructions
- Complétez l’en-tête de la fonction
get_lengths()qui prend un seul paramètre,input_list. - Dans la boucle
forde la définition de fonction,yieldla longueur des chaînes deinput_list. - Complétez la partie itérable de la boucle
forqui affiche les valeurs produites par la fonction génératriceget_lengths(). Fournissez l’appel àget_lengths()en lui passant la listelannister.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Create a list of strings
lannister = ['cersei', 'jaime', 'tywin', 'tyrion', 'joffrey']
# Define generator function get_lengths
def ____:
"""Generator function that yields the
length of the strings in input_list."""
# Yield the length of a string
for person in input_list:
____
# Print the values generated by get_lengths()
for value in ____:
print(value)