构建一个生成器
在前面的练习中,您主要编写了使用推导式语法的生成器表达式。能够用推导式来写生成器表达式,让您的工作轻松了很多!
现在回忆一下视频中的内容:除了生成器表达式,还有「生成器函数」。生成器函数与生成器表达式类似,会按序产生一系列值,而不是返回单个值。定义生成器函数与普通函数相同,但在产生值时使用关键字 yield,而不是 return。
在本练习中,您将创建一个生成器函数,其机制与您在上一个练习中定义的生成器表达式类似:
lengths = (len(person) for person in lannister)
本练习是课程的一部分
Python 工具箱
练习说明
- 补全函数
get_lengths()的函数头,该函数只有一个参数input_list。 - 在函数定义中的
for循环里,yield出input_list中每个字符串的长度。 - 补全用于打印由
get_lengths()生成器函数产生的值的for循环的可迭代部分。调用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)