Kom igångKom igång gratis

Bygg en generatorfunktion

I tidigare övningar har du främst arbetat med att skriva generatoruttryck, som använder comprehension-syntax. Tack vare den syntaxen blev arbetet med generatoruttryck betydligt enklare!

Kom nu ihåg från videon att det inte bara finns generatoruttryck – det finns även generatorfunktioner. Generatorfunktioner är funktioner som, precis som generatoruttryck, returnerar en serie värden med yield i stället för ett enda värde med return. En generatorfunktion definieras på samma sätt som en vanlig funktion, men varje gång den producerar ett värde används nyckelordet yield i stället för return.

I den här övningen skapar du en generatorfunktion med liknande logik som det generatoruttryck du definierade i föregående övning:

lengths = (len(person) for person in lannister)

Den här övningen är en del av kursen

Python Toolbox

Visa kurs

Övningsinstruktioner

  • Fyll i funktionsrubriken för funktionen get_lengths() som tar en enda parameter, input_list.
  • I for-slingan i funktionsdefinitionen använder du yield för att returnera längden på strängarna i input_list.
  • Fyll i den itererbara delen av for-slingan som skriver ut värdena som genereras av generatorfunktionen get_lengths(). Anropa get_lengths() och skicka in listan lannister.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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)
Redigera och kör kod