Iteration über Iterables (2)
Eines der Dinge, die du in diesem Kapitel gelernt hast, ist, dass nicht alle Iterables tatsächliche Listen sind. Ein paar Beispiele, die wir uns angesehen haben, sind Strings und die Verwendung der Funktion range()
. In dieser Aufgabe werden wir uns auf die range()
-Funktion konzentrieren.
Du kannst range()
in einer for
-Schleife verwenden, als ob es eine Liste wäre, über die man iteriert:
for i in range(5):
print(i)
Erinnere dich daran, dass range()
die Liste nicht wirklich erstellt. Stattdessen wird ein range-Objekt mit einem Iterator erstellt, der die Werte produziert, bis er die Grenze erreicht (im Beispiel bis zum Wert 4). Wenn range()
die eigentliche Liste erstellt hat, kann es sein, dass der Aufruf mit einem Wert von \(10^{100}\) nicht funktioniert, vor allem weil eine so große Zahl den Speicher eines normalen Computers übersteigen kann. Der Wert \(10^{100}\) ist ein sogenanntes Googol, also eine 1 gefolgt von einhundert 0en. Das ist eine riesige Zahl!
Hier ist es deine Aufgabe, zu zeigen, dass der Aufruf von range()
mit \(10^{100}\) die Liste nicht wirklich vorerzeugt.
Diese Übung ist Teil des Kurses
Python Toolbox
Anleitung zur Übung
- Erstelle ein Iteratorobjekt
small_value
überrange(3)
mit Hilfe der Funktioniter()
. - Verwende eine
for
-Schleife, umrange(3)
zu durchlaufen und den Wert für jede Iteration auszugeben. Verwendenum
als Schleifenvariable. - Erstelle ein Iteratorobjekt
googol
überrange(10 ** 100)
.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# Create an iterator for range(3): small_value
small_value = ____
# Print the values in small_value
print(next(small_value))
print(next(small_value))
print(next(small_value))
# Loop over range(3) and print the values
# Create an iterator for range(10 ** 100): googol
googol = ____
# Print the first 5 values from googol
print(next(googol))
print(next(googol))
print(next(googol))
print(next(googol))
print(next(googol))