Fork me on GitHub 0

python 迭代器和生成器

迭代器

可以用在for语句进行循环的对象就是可迭代对象。通过for语句一次循环取出每一个元素,这种容器就是迭代器。除了用for,迭代器还可以通过next()方法逐一读取下一个元素。

为容器对象添加__next__()和__iter__()方法。 __iter__()返回迭代器对象本身,__next__()返回每次调用next()或迭代的对象。

创建迭代器对象的好处是当序列长度很大时,可以减少内存消耗,每次只需要记录一个值即可。

迭代就是从迭代器中取元素的过程。

 

生成器

生成器通过yiled语句生成生成器,yield可以让普通函数变成一个生成器,

生成器也是一种迭代器,但是只能对其迭代一次,因为它们并没有把所有值存在内存中,而是在运行时生成值。

大多数生成器是以函数来实现的。它们并不返回一个值,而是yiled一个值。

一种更直观的解释是:程序执行到 yield 会返回值并暂停,再次调用 next() 时会从上次暂停的地方继续开始执行

 

参考:

https://www.cnblogs.com/yuzhanhong/p/9184565.html

posted @ 2020-11-25 18:56  amazingcode  阅读(101)  评论(0编辑  收藏  举报