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
Övningsinstruktioner
- Skapa ett iterator-objekt
small_valueöverrange(3)med hjälp av funktioneniter(). - Använd en
for-slinga för att iterera överrange(3)och skriv ut värdet för varje iteration. Användnumsom loopvariabel. - Skapa ett iterator-objekt
googolöverrange(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))