Construiește un generator
În exercițiile anterioare, ai lucrat în principal cu expresii generator, care folosesc sintaxa de comprehensiune. Posibilitatea de a folosi această sintaxă pentru expresii generator ți-a simplificat enorm munca!
Acum, reamintește-ți din video că, pe lângă expresiile generator, există și funcții generator. Funcțiile generator sunt funcții care, la fel ca expresiile generator, produc o serie de valori cu yield, în loc să returneze o singură valoare. O funcție generator se definește ca o funcție obișnuită, cu diferența că, ori de câte ori generează o valoare, folosește cuvântul cheie yield în loc de return.
În acest exercițiu, vei crea o funcție generator cu un mecanism similar cu cel al expresiei generator definite în exercițiul anterior:
lengths = (len(person) for person in lannister)
Acest exercițiu face parte din cursul
Cutia cu instrumente Python
Instrucțiuni pentru exercițiu
- Completează antetul funcției
get_lengths(), care are un singur parametru,input_list. - În bucla
fordin definiția funcției, foloseșteyieldpentru a produce lungimea șirurilor de caractere dininput_list. - Completează partea iterabilă a buclei
forcare afișează valorile generate de funcția generatorget_lengths(). Transmite listalannisterca argument al apeluluiget_lengths().
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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)