Construire un générateur
Dans les exercices précédents, vous avez principalement traité l'écriture d'expressions de générateur, qui utilise la syntaxe de compréhension. La possibilité d'utiliser la syntaxe de compréhension pour les expressions des générateurs a grandement facilité votre travail !
Rappelez-vous que dans la vidéo, il n'y a pas seulement des expressions de générateur, il y a aussi des fonctions de générateur. 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 seule valeur. Une fonction générateur est définie comme une fonction normale, mais lorsqu'elle génère une valeur, elle utilise le mot-clé yield
au lieu de return
.
Dans cet exercice, vous allez créer une fonction générateur avec un mécanisme similaire à l'expression générateur que vous avez 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 a un seul paramètre,input_list
. - Dans la boucle
for
de la définition de la fonction,yield
la longueur des chaînes de caractères dansinput_list
. - Complétez la partie itérable de la boucle
for
pour imprimer les valeurs générées par la fonction générateurget_lengths()
. Fournissez l'appel àget_lengths()
, en passant par 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)