Iterování přes iterovatelné objekty (2)
V této kapitole ses mimo jiné dozvěděl/a, že ne všechny iterovatelné objekty jsou skutečné seznamy. Ukázali jsme si například řetězce a funkci range(). V tomto cvičení se zaměříme právě na funkci range().
range() lze v cyklu for použít jako by šlo o seznam, přes který iterujeme:
for i in range(5):
print(i)
Pamatuj, že range() seznam ve skutečnosti nevytváří — místo toho vytvoří objekt range s iterátorem, který generuje hodnoty, dokud nedosáhne zadané hranice (v příkladu hodnoty 4). Kdyby range() skutečný seznam vytvářel, zavolání s hodnotou \(10^{100}\) by pravděpodobně selhalo, protože tak velké číslo by mohlo přesáhnout paměť běžného počítače. Hodnota \(10^{100}\) se nazývá Googol — to je jednička následovaná stem nul. Tedy opravdu obří číslo!
Tvým úkolem v tomto cvičení je ukázat, že volání range() s hodnotou \(10^{100}\) seznam předem nevytvoří.
Toto cvičení je součástí kurzu
Python Toolbox
Pokyny k cvičení
- Vytvoř objekt iterátoru
small_valuenadrange(3)pomocí funkceiter(). - Pomocí cyklu
forproveď iteraci přesrange(3)a vypisuj hodnotu při každé iteraci. Jako proměnnou cyklu použijnum. - Vytvoř objekt iterátoru
googolnadrange(10 ** 100).
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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))