python 生成器

本文介绍了Python中的生成器概念及其两种创建方法:一是通过列表生成式的语法稍作修改;二是利用带有yield关键字的函数。生成器允许开发者在需要时生成序列的下一项,非常适合处理大量数据或需要延迟计算的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘自:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00138681965108490cb4c13182e472f8d87830f13be6e88000

前面说了列表生成式,那么生成器怎么做呢

第一种方法,因为前面我们的列表生成式是用[]表示的,所以这里我们把【】换成()就行了

生成器保存的是算法

比如说我们的列表生成式是

k = 【x*x  for  x   in   range(5)】

那么我们的生成器就是

g =(x*x   for  x   in   range(5))

我们怎么调用这个生成器中的元素呢

一个是使用next()

>>> g = (x*x for x in range(5))
>>> g.next()
0
>>> g.next()
1
>>> g.next()
4
>>> g.next()
9

但是在实际生产中我们要是调用生成器中的元素的话,我们就使用for循环来迭代

g =(x*x   for  x   in   range(5))

for   i    in   g:

  print  i

 

还有一种方法就是在函数中定义yield关键字

 这种方法就是用yield关键字了,就像高中的根据规则,推断出函数一样,我们这里只是在里面加了一个yield

比如说这里的斐波那契函数

def fib(max):

    n,a,b = 0,0,1

        while n < max:

#    print b

      yield b

    a,b = b,a+b

    n = n+1

小结

generator是非常强大的工具,在Python中,可以简单地把列表生成式改成generator,也可以通过函数实现复杂逻辑的generator。

要理解generator的工作原理,它是在for循环的过程中不断计算出下一个元素,并在适当的条件结束for循环。对于函数改成的generator来说,遇到return语句或者执行到函数体最后一行语句,就是结束generator的指令,for循环随之结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值