python如何使用生成器函数实现可迭代对象
来源:互联网 发布:暗网 知乎 编辑:程序博客网 时间:2024/05/23 01:22
实际案例
实现一个可迭代对象的类,它能迭代出给定范围内所有素数:
- 1
- 2
- 3
输出结果为:
- 1
解决方案:将该类的__iter__方法实现成生成器函数,每次yield返回一个素数。
有了解决方案后,我们首先要了解一下什么是生成器函数。让我们先看看如下代码:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
其输出结果为:
- 1
诶,我们调用了f()却没有打印输出我们设想的结果,这是为什么呢?我们现在来看看这个输出结果,它表示调用f()后的返回结果类型为generator类型,即返回的结果为生成器对象。那么,我们将任何包含yield 语句的函数称为生成器(函数)。当然,生成器不仅仅是包含yield语句的函数,更多关于生成器的知识请参阅廖雪峰的Python教程。
yield语句不会像return那样返回值,而是每次产生多个值。每次产生一个值(使用yield语句),函数就会被冻结:即函数停在那点等待被重新唤醒。函数被重新唤醒后就从停止的那点开始执行。
将yield语句的知识补充完后,我们再回到生成器这个知识点。上面我们讲到我们调用f()后返回一个生成器对象,其和迭代器对象类似,它也可以实现next()。(注:Python 3.X版本中为__next__()。)
那我们就在代码中实现next():
- 1
- 2
- 3
其结果为:
- 1
- 2
- 3
- 4
- 5
- 6
通过上述代码,我们又可发现g(生成器对象)也是一个迭代器对象。因此,我们就可以利用这一点解决我们的实际案例,代码如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
输出结果为:
阅读全文
0 0
- python-7-如何使用生成器函数实现可迭代对象?
- python如何使用生成器函数实现可迭代对象
- 如何使用生成器函数实现可迭代对象
- python 3-3 如何使用生成器函数实现可迭代对象 __iter__,yield
- 3-3使用生成器函数实现可迭代对象
- Python迭代器,可迭代对象,生成器
- Python使用生成器实现生产者消费者模式
- Python可迭代对象,迭代器,生成器的区别
- Python 可迭代的对象、迭代器和生成器
- Python 可迭代的对象、迭代器和生成器
- python迭代,可迭代对象,生成器,迭代器--
- python 生成器函数
- Python 生成器函数_2
- Python函数之生成器
- Python 实现递归生成器
- python实现概率生成器
- Python 用一个生成器函数实现杨辉三角
- Python的生成器表达式与生成器函数
- 草稿——swift的简单学习 -- 音乐播放器
- sklearn-KNN
- 关于列举属性用点还是用【】
- android内存泄漏检测工具leakCanary--代码工具备忘录
- C# BackGroundWorker 的简单使用
- python如何使用生成器函数实现可迭代对象
- HTML中的标签系列-02-表单标签等
- HDU3376:Matrix Again(最大费用最大流)
- Google Smart Reply笔记: Automated Response Suggestion for Email
- SDUT 2107 图的深度遍历
- OpenCV-Python:访问像素值并修改、访问图片属性、设置ROI、分割合并图片
- poj 1182 中等
- python实现各种排序算法
- 关于新版ADT创建项目时出现appcompat_v7的问题