Kom igångKom igång gratis

Iterera över iterbara objekt (2)

En av sakerna du lärde dig i det här kapitlet är att inte alla iterbara objekt är faktiska listor. Några exempel vi tittade på är strängar och användningen av funktionen range(). I den här övningen fokuserar vi på range().

Du kan använda range() i en for-slinga som om det vore en lista att iterera över:

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

Kom ihåg att range() inte faktiskt skapar en lista – i stället skapar den ett range-objekt med en iterator som producerar värden tills den når gränsen (i exemplet, tills värdet 4). Om range() hade skapat en faktisk lista skulle ett anrop med värdet \(10^{100}\) kunna orsaka problem, framför allt eftersom ett så stort tal kan överstiga en vanlig dators minne. Värdet \(10^{100}\) kallas faktiskt Googol – det är en etta följd av hundra nollor. Det är ett enormt tal!

Din uppgift i den här övningen är att visa att ett anrop till range() med \(10^{100}\) inte faktiskt skapar listan i förväg.

Den här övningen är en del av kursen

Python Toolbox

Visa kurs

Övningsinstruktioner

  • Skapa ett iterator-objekt small_value över range(3) med hjälp av funktionen iter().
  • Använd en for-slinga för att iterera över range(3) och skriv ut värdet för varje iteration. Använd num som loopvariabel.
  • Skapa ett iterator-objekt googol över range(10 ** 100).

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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))
Redigera och kör kod