CommencezCommencez 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 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

Voir le cours

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 for de la définition de la fonction, utilisez yield pour renvoyer la longueur des chaînes dans input_list.
  • Complétez la partie itérable de la boucle for pour afficher les valeurs générées 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 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)
Modifier et exécuter le code