首页 > 其他 > 详细

可迭代对象&迭代器&生成器

时间:2021-02-15 10:02:48      阅读:27      评论:0      收藏:0      [点我收藏+]

在python中,可迭代对象&迭代器&生成器的关系如下图:

技术分享图片

即:生成器是一种特殊的迭代器,迭代器是一种特殊的可迭代对象。

可迭代对象

技术分享图片

如上图,这里x是一个列表(可迭代对象),其实正如第一张图所示,可迭代对象包含范围很广,如list是可迭代对象,dict是可迭代对象,set也是可迭代对象;
可迭代对象必须含有__iter__方法,该方法返回一个迭代器对象。上图中,y和z是通过可迭代对象x利用iter方法得到的两个迭代器。

迭代器

迭代器内部持有一个状态,该状态用于记录当前迭代所在的位置,以方便下次迭代的时候获取正确的元素。不同于可迭代对象的宽泛,迭代器有具体的迭代器类型,比如list_iterator,set_iterator等(这些迭代器都可以通过相应的可迭代对象利用iter方法得到)。

迭代器必须含有__next__方法,但是迭代器又属于可迭代对象,所以迭代器必须含有__iter__方法和__next__方法。

生成器

生成器也是一种迭代器

技术分享图片

若函数的定义体中有yield关键字,该函数就是生成器函数。调用生成器函数时,会返回一个生成器(generator)对象,即生成器函数是生成器产出的地方。

无论是迭代器还是生成器,都属于python语法糖的一部分,都是为了简洁实用的目标。

可迭代对象&迭代器&生成器

原文:https://www.cnblogs.com/pythonfl/p/14402543.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!