Iterarea prin iterabile (2)
Unul dintre lucrurile pe care le-ai învățat în acest capitol este că nu toate iterabilele sunt liste propriu-zise. Câteva exemple pe care le-am explorat sunt șirurile de caractere și funcția range(). În acest exercițiu, ne vom concentra pe funcția range().
Poți folosi range() într-o buclă for ca și cum ar fi o listă prin care iterezi:
for i in range(5):
print(i)
Reține că range() nu creează efectiv lista; în schimb, creează un obiect de tip range cu un iterator care produce valorile până la atingerea limitei (în exemplu, până la valoarea 4). Dacă range() ar crea lista efectivă, apelarea ei cu valoarea \(10^{100}\) ar putea să nu funcționeze, mai ales că un număr atât de mare poate depăși memoria unui calculator obișnuit. Valoarea \(10^{100}\) se numește Googol — adică un 1 urmat de o sută de zerouri. Un număr imens!
Sarcina ta în acest exercițiu este să demonstrezi că apelarea range() cu \(10^{100}\) nu va crea lista în mod anticipat.
Acest exercițiu face parte din cursul
Cutia cu instrumente Python
Instrucțiuni pentru exercițiu
- Creează un obiect iterator numit
small_valuepesterange(3)folosind funcțiaiter(). - Folosind o buclă
for, iterează pesterange(3)și afișează valoarea la fiecare iterație. Foloseștenumca variabilă a buclei. - Creează un obiect iterator numit
googolpesterange(10 ** 100).
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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))