Python中的生成器

Python中的生成器

生成器

Python中的生成器是一种特殊的函数,它可以产生一系列值,这些值可以一个一个地被调用或很自然地生成一个迭代器。生成器函数使用关键词yield来暂停和继续函数执行,yield会返回一个值,并在下一次执行时从上一次离开的位置继续执行,从而使函数可以保留当前的状态和数据。
生成器也是迭代器
生成器的标志:使用yield语句

例如,下面是一个生成斐波那契数列的生成器函数

def fun():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

f = fun()
for i in range(10):
    print(next(f))

练习

定义一个生成器函数:
传入两个列表:
列表1: [“red”, “black”, “green”]
列表2: [“S”, “M”, “L”]
1.调用next返回结果: 调用9次next()
输出结果:
(red, S)
(red, M)
(red, L)

(green, L)
2.使用循环去访问生成器:
输出结果:
(red, S)
(red, M)
(red, L)

(green, L)
注意循环终止的条件

list_data1 = ['red', 'black', 'green']
list_data2 = ['S', 'M', 'L']
def gen_fun():
    for i in list_data1:
        for j in list_data2:
            yield i, j

gen = gen_fun()

print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))

print()
for item in gen_fun():
    print(item)
    if item == ("green", "L"):
        break

运行结果

('red', 'S')
('red', 'M')
('red', 'L')
('black', 'S')
('black', 'M')
('black', 'L')
('green', 'S')
('green', 'M')
('green', 'L')

('red', 'S')
('red', 'M')
('red', 'L')
('black', 'S')
('black', 'M')
('black', 'L')
('green', 'S')
('green', 'M')
('green', 'L')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值