- 生成器是用于创建迭代器的工具,写法类似函数,但返回时用yield替代return
def reverse(data):
for i in range(len(data)-1, -1, -1):
yield data[i]
for i in reverse([1, 2, ,3, 4]):
print(i)
4
3
2
1
- 某些简单的生成器可以用生成器表达式替代,写法上类似列表推导式
square = (x**2 for x in range(10))
for i in square:
print(i)
0
1
4
9
- 生成器表达式也可以直接作为函数的参数
sum(x**2 for x in range(10))
285