Ітерація по ітерованих обʼєктах (2)
Ви дізналися в цьому розділі, що не всі ітеровані обʼєкти є справжніми списками. Декілька прикладів, які ми розглядали, — це рядки та використання функції range(). У цій вправі ми зосередимося на range().
Ви можете використовувати range() у циклі for ніби це список, по якому потрібно пройтися:
for i in range(5):
print(i)
Памʼятайте, що range() насправді не створює список; натомість він створює обʼєкт діапазону з ітератором, який генерує значення, доки не досягне межі (у прикладі — доки значення 4). Якби range() створював справжній список, виклик із значенням \(10^{100}\), ймовірно, не спрацював би, особливо тому, що таке велике число може перевищити памʼять звичайного компʼютера. Значення \(10^{100}\) має назву гугол — це 1 і сто нулів після неї. Це колосальне число!
Ваше завдання у цій вправі — показати, що виклик range() з \(10^{100}\) не створює список наперед.
Ця вправа є частиною курсу
Набір інструментів Python
Інструкції до вправи
- Створіть обʼєкт ітератора
small_valueнадrange(3)за допомогою функціїiter(). - За допомогою циклу
forпройдіться поrange(3), виводячи значення на кожній ітерації. Використовуйтеnumяк змінну циклу. - Створіть обʼєкт ітератора
googolнадrange(10 ** 100).
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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))