เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การวนซ้ำผ่าน iterable (2)

สิ่งหนึ่งที่เรียนรู้ไปในบทนี้คือ ไม่ใช่ทุก iterable จะเป็น ลิสต์ จริงๆ ตัวอย่างที่เราได้ดูกันไปแล้วคือ string และการใช้ฟังก์ชัน range() ในแบบฝึกหัดนี้เราจะเน้นที่ฟังก์ชัน range() เป็นหลัก

สามารถใช้ range() ใน for loop ราวกับ ว่ามันคือลิสต์ที่จะวนซ้ำ:

for i in range(5):
    print(i)

จำไว้ว่า range() ไม่ได้สร้างลิสต์จริงๆ แต่จะสร้าง range object พร้อม iterator ที่ผลิตค่าออกมาทีละค่าจนถึงขีดจำกัดที่กำหนด (ในตัวอย่างนี้คือจนถึงค่า 4) หาก range() สร้างลิสต์จริงขึ้นมา การเรียกใช้ด้วยค่า \(10^{100}\) อาจทำงานไม่ได้ เพราะตัวเลขขนาดนั้นอาจเกินความจำของคอมพิวเตอร์ทั่วไป ค่า \(10^{100}\) นี้มีชื่อเรียกว่า Googol ซึ่งคือเลข 1 ตามด้วยศูนย์อีกหนึ่งร้อยตัว นับว่าเป็นตัวเลขที่ใหญ่มากทีเดียว!

แบบฝึกหัดนี้จะพิสูจน์ให้เห็นว่าการเรียก range() ด้วย \(10^{100}\) จะไม่สร้างลิสต์ขึ้นมาจริงๆ

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Python Toolbox

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้าง iterator object ชื่อ small_value จาก range(3) โดยใช้ฟังก์ชัน iter()
  • ใช้ for loop วนซ้ำผ่าน range(3) แล้วพิมพ์ค่าในแต่ละรอบ โดยใช้ num เป็นตัวแปรลูป
  • สร้าง iterator object ชื่อ 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))
แก้ไขและรันโค้ด