CommencerCommencer gratuitement

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

Afficher le cours

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 dans input_list.
  • Complétez la partie itérable de la boucle for pour imprimer les valeurs générées par la fonction générateur get_lengths(). Fournissez l'appel à get_lengths(), en passant par la liste lannister.

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)
Modifier et exécuter le code