在python中,想要了解什么是生成器(generator),首先就需要了解什么是yield关键字。yield表达式只能函数内部或者lambda函数中使用,使用了yield表达式的函数即为生成器函数,而生成器函数返回的可迭代对象即为生成器,生成器的本质就是迭代器。
了解了什么是生成器,那么创建生成器就简单了,下面是一个创建生成器的简单示例。
def genexp(num):
for i in range(num):
yield i
gens = genexp(5)
# gens:
以上示例是用于生成数字1~5的生成器,可以看到genexp函数返回的对象类型就是generator。
1,for循环遍历
gens = genexp(5)
for gs in gens:
print(gs)
# gs: 0 1 2 3 4
2,转换为列表for循环遍历(生成器转换为列表可获取索引)
gens = list(genexp(5))
#
for gs in gens:
print(gs)
# gs: 0 1 2 3 4
for i, gs in enumerate(gens):
print(i, gs)
# i: 0 1 2 3 4
# gs: 0 1 2 3 4
3,使用next函数循环遍历
while True:
try:
gs = next(gens)
print(gs)
except:
break
# gs: 0 1 2 3 4
4,使用__next__方法循环遍历
while True:
try:
gs = gens.__next__()
print(gs)
except:
break
# gs: 0 1 2 3 4