Einen Generator erstellen
In den bisherigen Aufgaben hast du dich vor allem mit dem Schreiben von Generatorausdrücken beschäftigt, die die Comprehension-Syntax verwenden. Die Möglichkeit, die Comprehension-Syntax für Generatorausdrücke zu verwenden, hat deine Arbeit so viel einfacher gemacht!
Erinnere dich daran, dass es nicht nur Generatorausdrücke gibt, sondern auch Generatorfunktionen. Generatorfunktionen sind Funktionen, die wie Generatorausdrücke eine Reihe von Werten liefern, anstatt einen einzelnen Wert zurückzugeben. Eine Generatorfunktion wird wie eine reguläre Funktion definiert, aber immer dann, wenn sie einen Wert erzeugt, verwendet sie das Schlüsselwort yield
anstelle von return
.
In dieser Aufgabe erstellst du eine Generatorfunktion mit einem ähnlichen Mechanismus wie der Generatorausdruck, den du in der vorherigen Aufgabe definiert hast:
lengths = (len(person) for person in lannister)
Diese Übung ist Teil des Kurses
Python Toolbox
Anleitung zur Übung
- Vervollständige den Funktionskopf für die Funktion
get_lengths()
, die einen einzigen Parameter hat,input_list
. - Gib in der
for
-Schleife in der Funktionsdefinition peryield
die Länge der Strings ininput_list
aus. - Vervollständige den Iterable-Teil der
for
-Schleife, um die von der Generatorfunktionget_lengths()
erzeugten Werte auszugeben. Gib den Aufruf anget_lengths()
weiter, indem du die Listelannister
übergibst.
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
# 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)