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 utiliser cette syntaxe pour les expressions génératrices vous a grandement simplifié la tâche!
Souvenez-vous maintenant de la vidéo : en plus des expressions génératrices, il existe 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, plutôt que de retourner une seule valeur. Une fonction génératrice se définit comme une fonction normale, 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 qui fonctionne de façon semblable à l'expression génératrice que vous avez définie à l'exercice précédent :
lengths = (len(person) for person in lannister)
Cette activité fait partie du cours
Boîte à outils Python
Instructions de l’exercice
- 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 la fonction, utilisezyieldpour renvoyer la longueur des chaînes dansinput_list. - Complétez la partie itérable de la boucle
forpour afficher les valeurs générées 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 ce code d’exemple.
# 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)