CommencerCommencer gratuitement

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

Afficher le cours

Instructions

  • Complétez l’en-tête de la fonction get_lengths() qui prend un seul paramètre, input_list.
  • Dans la boucle for de la définition de fonction, yield la longueur des chaînes de input_list.
  • Complétez la partie itérable de la boucle for qui affiche les valeurs produites par la fonction génératrice get_lengths(). Fournissez l’appel à get_lengths() en lui passant 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