Aan de slagGa gratis aan de slag

Bouw een generator

In eerdere oefeningen heb je vooral gewerkt met generator-expressies, die gebruikmaken van comprehension-syntaxis. Dat je comprehension-syntaxis voor generator-expressies kunt gebruiken, maakte je werk een stuk makkelijker!

Onthoud nu uit de video dat er niet alleen generator-expressies zijn, maar ook generatorfuncties. Generatorfuncties zijn functies die, net als generator-expressies, een reeks waarden opleveren in plaats van één enkele waarde terug te geven. Je definieert een generatorfunctie net als een gewone functie, maar telkens wanneer er een waarde wordt gegenereerd, gebruik je het sleutelwoord yield in plaats van return.

In deze oefening maak je een generatorfunctie met een vergelijkbaar mechanisme als de generator-expressie die je in de vorige oefening hebt gedefinieerd:

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

Deze oefening maakt deel uit van de cursus

Python-gereedschapskist

Cursus bekijken

Oefeninstructies

  • Maak de functiekop af voor de functie get_lengths() met één parameter: input_list.
  • yield in de for-lus in de functiedefinitie de lengte van de strings in input_list.
  • Maak het iterabele deel af van de for-lus die de waarden afdrukt die door de generatorfunctie get_lengths() worden gegenereerd. Roep get_lengths() aan en geef de lijst lannister door.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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)
Code bewerken en uitvoeren