Iterieren über Iterables (2)
In diesem Kapitel hast du unter anderem gelernt, 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)
Denke 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}\) bezeichnet ein sogenanntes Googol, also eine Eins gefolgt von einhundert Nullen. Eine gigantische Zahl!
Deine Aufgabe ist es nun, zu zeigen, dass der Aufruf von range() mit \(10^{100}\) die Liste nicht wirklich vorerzeugt.
Diese Übung ist Teil des Kurses
<Kurs>Python Toolbox</Kurs>Übungsanweisungen
- 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. Verwendenumals Schleifenvariable. - Erstelle ein Iteratorobjekt
googolüberrange(10 ** 100).
Interaktive praktische Ü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))