Iterazione su iterabili (2)
Una delle cose che hai imparato in questo capitolo è che non tutti gli iterabili sono vere e proprie liste. Un paio di esempi che abbiamo visto sono le stringhe e l'uso della funzione range(). In questo esercizio ci concentreremo sulla funzione range().
Puoi usare range() in un ciclo for come se fosse una lista da iterare:
for i in range(5):
print(i)
Ricorda che range() in realtà non crea la lista; invece, crea un oggetto intervallo con un iteratore che produce i valori fino a raggiungere il limite (nell'esempio, fino al valore 4). Se range() ha creato la lista vera e propria, chiamarla con un valore di \(10^{100}\) potrebbe non funzionare, soprattutto perché un numero così grande potrebbe superare la memoria di un normale computer. Il numero \(10^{100}\) è in realtà quello che si chiama un Googol, cioè un 1 seguito da cento zeri. È un numero pazzesco!
Il tuo compito in questo esercizio è dimostrare che chiamare range() con \(10^{100}\) non crea effettivamente la lista in anticipo.
Questo esercizio fa parte del corso
Strumenti per Python
Istruzioni dell'esercizio
- Crea un oggetto iteratore
small_valuesurange(3)usando la funzioneiter(). - Usa un ciclo "
for" e ripeti "range(3)", stampando il valore per ogni ripetizione. Usanumcome variabile del ciclo. - Crea un oggetto iteratore
googolsurange(10 ** 100).
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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))