Tworzenie generatora
W poprzednich ćwiczeniach pracowałeś głównie z wyrażeniami generatorowymi, które korzystają ze składni comprehension. Dzięki temu tworzenie generatorów było znacznie prostsze!
Przypomnij sobie z wideo, że oprócz wyrażeń generatorowych istnieją również funkcje generatorowe. Funkcje generatorowe to funkcje, które – podobnie jak wyrażenia generatorowe – zwracają serię wartości zamiast jednej wartości. Definiuje się je tak samo jak zwykłe funkcje, z tą różnicą, że zamiast słowa kluczowego return używają słowa kluczowego yield.
W tym ćwiczeniu stworzysz funkcję generatorową działającą na podobnej zasadzie co wyrażenie generatorowe zdefiniowane w poprzednim ćwiczeniu:
lengths = (len(person) for person in lannister)
To ćwiczenie jest częścią kursu
Zestaw narzędzi Pythona
Instrukcje do ćwiczenia
- Uzupełnij nagłówek funkcji
get_lengths(), która przyjmuje jeden parametr:input_list. - W pętli
forwewnątrz definicji funkcji użyjyield, aby zwrócić długość kolejnych łańcuchów znaków zinput_list. - Uzupełnij część iterowalną pętli
forwypisującej wartości generowane przez funkcję generatorowąget_lengths(). Wywołajget_lengths(), przekazując jej listęlannister.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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)