Lặp qua các iterable (2)
Một trong những điều bạn đã học ở chương này là không phải mọi iterable đều là danh sách thực sự. Vài ví dụ chúng ta đã xem là chuỗi và việc dùng hàm range(). Trong bài tập này, ta sẽ tập trung vào hàm range().
Bạn có thể dùng range() trong một vòng lặp for như thể đó là một danh sách để lặp qua:
for i in range(5):
print(i)
Hãy nhớ rằng range() thực ra không tạo ra danh sách; thay vào đó, nó tạo một đối tượng range với một iterator sinh ra các giá trị cho đến khi chạm ngưỡng (trong ví dụ là đến giá trị 4). Nếu range() tạo sẵn danh sách thực sự, gọi nó với giá trị \(10^{100}\) có thể sẽ không hoạt động, nhất là vì một số lớn như vậy có thể vượt quá bộ nhớ của máy tính thông thường. Giá trị \(10^{100}\) thực ra được gọi là Googol, tức là số 1 theo sau bởi một trăm số 0. Đó là một con số khổng lồ!
Nhiệm vụ của bạn trong bài này là chứng minh rằng gọi range() với \(10^{100}\) sẽ không tạo sẵn danh sách trước.
Bài tập này là một phần của khóa học
Hộp Công Cụ Python
Hướng dẫn bài tập
- Tạo một đối tượng iterator
small_valuetrênrange(3)bằng hàmiter(). - Dùng vòng lặp
forđể lặp quarange(3), in ra giá trị ở mỗi lần lặp. Dùngnumlàm biến vòng lặp. - Tạo một đối tượng iterator
googoltrênrange(10 ** 100).
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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))