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

สร้าง generator

ในแบบฝึกหัดก่อนหน้า เราได้ฝึกเขียน generator expression โดยใช้ syntax แบบ comprehension ซึ่งช่วยให้งานง่ายขึ้นมาก

ทบทวนจากวิดีโอ: นอกจาก generator expression แล้ว ยังมี generator function อีกด้วย Generator function คือฟังก์ชันที่ทำงานคล้ายกับ generator expression กล่าวคือจะ yield ค่าออกมาทีละค่าต่อเนื่องกัน แทนที่จะ return ค่าเดียว การนิยาม generator function ทำเหมือนฟังก์ชันทั่วไป แต่ใช้คีย์เวิร์ด yield แทน return เมื่อต้องการส่งค่าออกมา

ในแบบฝึกหัดนี้ จะสร้าง generator function ที่มีกลไกคล้ายกับ generator expression ที่นิยามไว้ในแบบฝึกหัดก่อนหน้า ดังนี้:

lengths = (len(person) for person in lannister)

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

Python Toolbox

ดูคอร์ส

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

  • เติมส่วนหัวฟังก์ชัน get_lengths() ให้สมบูรณ์ โดยฟังก์ชันนี้รับพารามิเตอร์เดียวคือ input_list
  • ใน for loop ภายในนิยามฟังก์ชัน ให้ yield ความยาว ของสตริงแต่ละตัวใน input_list
  • เติมส่วน iterable ของ for loop ที่ใช้พิมพ์ค่าที่ได้จาก generator function get_lengths() โดยเรียกใช้ get_lengths() พร้อมส่งลิสต์ lannister เข้าไป

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Create a list of strings
lannister = ['cersei', 'jaime', 'tywin', 'tyrion', 'joffrey']

# Define generator function get_lengths
def ____:
    """Generator function that yields the
    length of the strings in input_list."""

    # Yield the length of a string
    for person in input_list:
        ____

# Print the values generated by get_lengths()
for value in ____:
    print(value)
แก้ไขและรันโค้ด