1. Học hỏi
  2. /
  3. Khoa Học
  4. /
  5. Hộp Công Cụ Python

Connected

Bài tập

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.

Hướng dẫn

100 XP
  • Tạo một đối tượng iterator small_value trên range(3) bằng hàm iter().
  • Dùng vòng lặp for để lặp qua range(3), in ra giá trị ở mỗi lần lặp. Dùng num làm biến vòng lặp.
  • Tạo một đối tượng iterator googol trên range(10 ** 100).