สร้าง 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 - ใน
forloop ภายในนิยามฟังก์ชัน ให้yieldความยาว ของสตริงแต่ละตัวในinput_list - เติมส่วน iterable ของ
forloop ที่ใช้พิมพ์ค่าที่ได้จาก generator functionget_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)