Xây dựng một generator
Trong các bài tập trước, bạn chủ yếu viết các generator expression, vốn dùng cú pháp comprehension. Việc có thể dùng cú pháp comprehension cho generator expression đã giúp bạn làm việc dễ dàng hơn nhiều!
Giờ hãy nhớ lại từ video rằng không chỉ có generator expression, còn có cả generator function. Generator function là các hàm mà, giống như generator expression, tạo ra một chuỗi giá trị bằng yield thay vì trả về một giá trị duy nhất. Một generator function được định nghĩa giống như hàm thông thường, nhưng mỗi khi tạo ra một giá trị, nó dùng từ khóa yield thay cho return.
Trong bài tập này, bạn sẽ tạo một generator function với cơ chế tương tự như generator expression bạn đã định nghĩa ở bài trước:
lengths = (len(person) for person in lannister)
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
- Hoàn thiện phần đầu hàm cho hàm
get_lengths()với một tham số duy nhất,input_list. - Trong vòng lặp
fortrong định nghĩa hàm,yieldđộ dài của các chuỗi tronginput_list. - Hoàn thiện phần iterable của vòng lặp
forđể in ra các giá trị được tạo bởi generator functionget_lengths(). Gọiget_lengths()và truyền vào danh sáchlannister.
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 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)