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)删除。
(0)
用户投稿
上一篇 2022年6月16日
下一篇 2022年6月16日

相关推荐

  • 小沈阳的女儿挺会打扮,穿普通的T恤,看着也挺高级

    在时尚界中我们了解的服装款式真的很多,但是当你去衣柜里找一件春夏秋冬都能穿着的服饰的时候,还是有比较少的款式的。因为每个季节都有一些更独特的服装,而像T恤这种真夏秋冬都有一大堆人在…

    2022年7月2日
  • 我喜欢简单 I like simplicity

    我喜欢简单的生活,一人一茶一书,慢慢品,两人两心两情,好好守;我喜欢简单的感情,没有欺骗,别给伤害;若是朋友,就真心相待,若是爱人,就陪在身边。简单,是一种态度,不争,顺其自然;不…

    2022年7月8日
  • 谈谈FC中的Return和Output的区别

    FC来自于英文单词Function的缩写,意为函数。和C/PASCAL语言一样,FC同样也支持返回值(Return)和输出参数(Output)。既然他们都可以从函数获取结果,那我们…

    2022年6月15日
  • 超燃的国货与国漫联名,努比亚X灵笼这波组合太强了

    手机行业的跨界合作案例有很多,与时尚品牌、与知名动漫或与古典文化的都用。特别是有不少品牌喜欢与日漫跨界合作,比如OPPO就曾多次与皮卡丘、高达等动漫的联名,小米与哆啦A梦、布朗熊的…

    2022年7月29日
  • 《亲爱的小孩》迎来大结局 任素汐:我理解方一诺的“自私”

    《亲爱的小孩》24日迎来大结局。这部剧用较为极端的案例,对女性生育困境及其引发的家庭连锁反应进行了真实表达,引起了很大反响。 长久以来,对于女性生育困境,一直是社会热点话题,但是女…

    2022年5月10日
  • 花好闻的香味

    一只花朵有自己的香味,闻起来也是各不相同,有这种味道,有那种味道,但闻起来确实都好闻。 花朵也能使人在愉悦的时候,大脑产生快乐的物质,也会使人经常想去闻它,所以,人们就会买这种的味…

    2022年4月30日
  • 究竟|“28城住房空置率12%”靠谱吗?如何正确看待空置率

    澎湃新闻记者 计思敏 近日,一份写有“全国28个大中城市平均住房空置率为12%”的调查报告再次引发大众对空置房的讨论。该报告称,南昌、廊坊、佛山住房空置率排前三,均在15%以上,南…

    2022年8月15日
  • 睡前坚持“揉地筋”、“刮肝经”,疏肝理气百病消

    肝气郁结指肝失疏泄、气机郁滞、情志抑郁、气血不畅的病理变化。 主要表现为: 1、情绪方面:情绪低落,经常唉声叹气或者是烦躁易怒。 2、睡眠方面:睡眠质量差,容易失眠。 3、消化方面…

    2022年9月13日
  • 女人生孩子的不易与艰辛谁又能理解?

    十月怀胎,一朝分娩。 一个人永远不知道自己的母亲在生自己的时候是多么痛苦的。 就算曾经想过怀胎十月的艰辛,但也没有体会到对方怀胎十月的艰辛和分娩的疼痛感。 因为有些东西只有自己真正…

    2022年8月19日
  • Go要点新解(二)map小解

    回顾前景 在上一节中,咱们留了一个代码: func main() { buffer := []byte(“test”) stringData := refl…

    2022年6月19日

联系我们

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