Vytvoř generátor
V předchozích cvičeních jsi pracoval/a především s generátorovými výrazy, které využívají syntaxi comprehension. Díky ní byla práce s generátory výrazně jednodušší!
Nyní si připomeň z videa, že kromě generátorových výrazů existují také generátorové funkce. Generátorové funkce jsou funkce, které – stejně jako generátorové výrazy – postupně vrací sérii hodnot místo jediné hodnoty. Generátorová funkce se definuje stejně jako běžná funkce, ale kdykoli produkuje hodnotu, používá klíčové slovo yield místo return.
V tomto cvičení vytvoříš generátorovou funkci s podobným chováním, jaké měl generátorový výraz z předchozího cvičení:
lengths = (len(person) for person in lannister)
Toto cvičení je součástí kurzu
Python Toolbox
Pokyny k cvičení
- Doplň hlavičku funkce
get_lengths(), která přijímá jediný parametrinput_list. - Ve smyčce
foruvnitř těla funkce použijyieldpro vrácení délky jednotlivých řetězců zinput_list. - Doplň iterovatelnou část smyčky
for, která vypisuje hodnoty generované funkcíget_lengths(). Předej jí seznamlannister.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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)