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
Övningsinstruktioner
- Fyll i funktionsrubriken för funktionen
get_lengths()som tar en enda parameter,input_list. - I
for-slingan i funktionsdefinitionen använder duyieldför att returnera längden på strängarna iinput_list. - Fyll i den itererbara delen av
for-slingan som skriver ut värdena som genereras av generatorfunktionenget_lengths(). Anropaget_lengths()och skicka in listanlannister.
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)