Aan de slagGa gratis aan de slag

Itereren over iterables (2)

Een van de dingen die je in dit hoofdstuk hebt geleerd, is dat niet alle iterables echte lijsten zijn. Enkele voorbeelden die we hebben bekeken zijn strings en het gebruik van de functie range(). In deze oefening focussen we op de functie range().

Je kunt range() in een for-lus gebruiken alsof het een lijst is waar je over iterereert:

for i in range(5):
    print(i)

Onthoud dat range() de lijst niet daadwerkelijk maakt; in plaats daarvan maakt het een range-object met een iterator die waarden oplevert totdat de limiet is bereikt (in het voorbeeld tot en met de waarde 4). Als range() wel de echte lijst zou maken, dan zou het aanroepen met een waarde van \(10^{100}\) niet werken, zeker omdat zo'n groot getal het geheugen van een gewone computer kan overschrijden. De waarde \(10^{100}\) heet trouwens een Googol: een 1 gevolgd door honderd nullen. Dat is enorm!

Je taak in deze oefening is te laten zien dat range() aanroepen met \(10^{100}\) de lijst niet vooraf aanmaakt.

Deze oefening maakt deel uit van de cursus

Python-gereedschapskist

Cursus bekijken

Oefeninstructies

  • Maak een iterator-object small_value over range(3) met de functie iter().
  • Gebruik een for-lus om over range(3) te itereren en print bij elke iteratie de waarde. Gebruik num als lusvariabele.
  • Maak een iterator-object googol over range(10 ** 100).

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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