Python基础之生成器

(一)什么是生成器

在python中,想要了解什么是生成器(generator),首先就需要了解什么是yield关键字。yield表达式只能函数内部或者lambda函数中使用,使用了yield表达式的函数即为生成器函数,而生成器函数返回的可迭代对象即为生成器,生成器的本质就是迭代器。

(二)如何创建生成器

了解了什么是生成器,那么创建生成器就简单了,下面是一个创建生成器的简单示例。

def genexp(num):
    for i in range(num):
        yield i
        
gens = genexp(5)
# gens: <class 'generator'>

以上示例是用于生成数字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))
# <class 'list'>
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

猜你喜欢

转载自blog.csdn.net/m0_47026232/article/details/133436211