Python:yield关键字

1. yield关键字

笔者已经在其他博客中介绍了使用yield关键字构造Python生成器的用法。生成器具有以下优势:

  • 生成器会返回一个生成器对象,而不是一次性执行完函数体内的所有代码。
  • 生成器是一种特殊的迭代器,它支持惰性计算,即按需产生数据,这对于处理大量数据或进行复杂计算时非常有用,因为它可以显著减少内存使用。

这里仅举一个例子介绍生成器的用法。具体如下(执行结果省略):

def simple_generator():
    yield 1
    yield 4
    yield 5

gen = simple_generator()
print(next(gen))  
print(next(gen))  
print(next(gen))

在运行这段代码的时候要注意gen = simple_generator()这句不能省略,否则输出的结果永远都是1。

除了yield,还可以使用如下方式生成器:

(a for a in [1,2,3,4])

这里主要基于生成器介绍yield的高级用法。

1.1 生成无限序列

生成器函数在每次执行时都会保持其状态,并且生成器采用的惰性计算,所以生成器非常适合生成无限序列或大数据集,而不必事先将所有数据存储在内存中。代码举例如下(执行结果省略):

def myGenerator():
    num=0
    while True:
        yield num
        num+=1

for i in myGenerator():
    print(i)
    if i>5:
        break

理论上myGenerator()函数可以一直运行下去,这里为了避免陷入死循环,在i>5的情况下强制跳出。python中

1.2 数据过滤

yield可以与条件结合使用,用于过滤生成的值。这允许生成器仅生成符合特定条件的值。具体用法举例如下(执行结果省略):

def myGenerator():
    num=0
    while True:
        if num%2==0:
            yield num
        num+=1
gen=myGenerator()
for _ in range(5):
    print(next(gen))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值