python生成器(Generator)

先解释几个易混淆的概念:

  • 可迭代对象(Iterable)
  • 迭代器(Iterator)
  • 迭代(Iteration)

Python中任意的对象,只要它定义了可以返回一个迭代器的__iter__方法,或者定义了可以支持下标索引的__getitem__方法,那么它就是一个可迭代对象。简单说,可迭代对象就是能提供迭代器的任意对象。

Python中任意的对象,只要定义了next(Python2) 或者__next__方法,它就是一个迭代器。注意:可迭代对象不一定是迭代器,也即对象即使支持迭代,因为缺少next或__next__方法也不能直接对其进行迭代操作,这个时候可以使用内置函数iter来返回一个迭代器对象。

迭代用简单的话讲,它就是从某个地方(比如一个列表)取出一个元素的过程。当我们使用一个循环来遍历某个东西时,这个过程本身就叫迭代。

生成器也是一种迭代器,但是你只能对其迭代一次。这是因为它们并没有把所有的值存在内存中,而是在运行时生成值。你通过遍历来使用它们,要么用一个“for”循环,要么将它们传递给任意可以进行迭代的函数和结构。大多数时候生成器是以函数来实现的。然而,它们并不返回(return)一个值,而是提供(yield)一个值,这样就不必担心使用大量资源。例如,计算斐波那契数列的生成器如下所示:

# generator versiondef fibon(n): a = b = 1 for i in range(n): yield a a, b = b, a + b

函数使用方法如下:

for x in fibon(1000000): print(x)

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年6月16日 06:15
下一篇 2022年6月16日 06:15

相关推荐

  • 分享4条发微商朋友圈的方法(微商朋友圈应该怎么发)

    对于微商朋友来说,朋友圈的重要性不言而喻了。 那么微商的朋友圈到底该怎么发呢? 为什么同样是经营一个朋友圈,有的微商看起来逼格满满,实际效果也不错;而有的却动都不动就被屏蔽甚至拉黑…

    2022年11月27日
  • 存储过程语法(sql server存储过程语法)

    今天小编给各位分享存储过程语法的知识,其中也会对sql server存储过程语法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! oracle存储过程基本语法…

    2022年11月26日
  • 《宝可梦朱紫》梦特性怎么获得?隐藏特性获取方法推荐

    宝可梦朱紫里有很多宝可梦都是拥有梦特性会变强的宝可梦,很多玩家不知道梦特性怎么获得,下面就给大家带来宝可梦朱紫隐藏特性获取方法推荐,感兴趣的小伙伴一起来看看吧,希望能帮助到大家。 …

    2022年11月25日
  • 《宝可梦朱紫》奇鲁莉安怎么进化?奇鲁莉安进化方法分享

    宝可梦朱紫中的奇鲁莉安要怎么进化呢?很多玩家都不知道,下面就给大家带来宝可梦朱紫奇鲁莉安进化方法分享,感兴趣的小伙伴一起来看看吧,希望能帮助到大家。 奇鲁莉安进化方法分享 奇鲁莉安…

    2022年11月25日
  • 1千克等于多少磅

    克,此定义在1958年被美国以及其他英联邦会员国承认换算回来,一千克等于262磅,一磅等于037千克英国在1963年开始,依据度量衡法案的规;1 磅=16 盎司=04536 千克 …

    2022年11月24日
  • 《宝可梦朱紫》暴飞龙怎么抓?暴飞龙获得方法

    宝可梦朱紫暴飞龙位置在哪?在游戏中,很多玩家还不清楚暴飞龙具体要怎么样获得,其实获得方法很简单,暴飞龙直接是没得抓的,需要玩家从宝贝龙进化得到,下面一起来看一下宝可梦朱紫暴飞龙获得…

    2022年11月23日
  • 《宝可梦朱紫》布土拨怎么进化?布土拨进化方法介绍

    宝可梦朱紫中,不同的宝可梦有不同的进化方法,其中布土拨的进化方法是比较特殊的。很多玩家不知道宝可梦朱紫布土拨怎么进化,下面就带来宝可梦朱紫布土拨进化方法介绍,一起来看看吧,希望能帮…

    2022年11月23日
  • 《宝可梦朱紫》薄荷怎么获得?薄荷获得方法

    宝可梦朱紫中薄荷有改变宝可梦的属性或性格等效果,很多玩家想知道宝可梦朱紫薄荷怎么获得,下面就带来宝可梦朱紫薄荷获得方法,感兴趣的小伙伴一起来看看吧,希望能帮助到大家。 薄荷获得方法…

    2022年11月23日
  • 《宝可梦朱紫》怎么交换精灵?交换精灵方法一览

    宝可梦朱紫中玩家可以和好友或者npc进行交换宝可梦获得自己没有的宝可梦,很多玩家想知道宝可梦朱紫怎么交换精灵,下面就带来宝可梦朱紫交换精灵方法一览,感兴趣的小伙伴不要错过,希望能帮…

    2022年11月23日
  • 《宝可梦朱紫》龙爪技能怎么获得?龙爪技能获取方法

    宝可梦朱紫龙爪技能怎么获得?在游戏中,很多玩家还不清楚龙爪技能应该怎么获取,其实获取方法有很多,下面一起来看一下宝可梦朱紫龙爪技能获取方法,希望可以帮助各位玩家顺利的进行游戏内容。…

    2022年11月23日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息