python实现用生成器实现可迭代对象的方法


本文摘自php中文网,作者小云云,侵删。

本文主要为大家详细介绍了python如何使用生成器实现可迭代对象,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。

案例分析:

实一个可迭代对象的类,它能迭代出给定范围内所有的素数:

pn = Number(1, 30)

for k in pn:

print(k)

结果为:2,3,5,7,11,13,17,19,23,29

如何解决这个问题?

将该类的__iter__方法实现成生成器函数,每次yield返回一个素数


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

#!/usr/bin/python3

class Number(object):

 def __init__(self, start, end):

  self.start = start

  self.end = end

    

 # 判断一个数字是否是素数

 def get_num(self, k):

  if k >= 2:

   for i in range(2, k):

    if k % i == 0:

     return False

   return True

   

 def __iter__(self):

  for k in range(self.start, self.end+1):

   if self.get_num(k):

    # 是素数yield出去

    yield k

      

if __name__ == '__main__':

 num = Number(2, 30)

 for i in num:

  print(i)

以上就是python实现用生成器实现可迭代对象的方法的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python学习之观察者模式

疑难杂症 :Python [] 与 list() 哪个快?为什么快?快多少呢?

Python和access的区别

Python语言有什么特点

Python数据可视化利器matplotlib详解

Python做并行计算可以吗

Python编程快速上手第六章实践项目参考code

Python怎么让程序重复运行

Python中随机取list中的元素方法

Python里面def是什么意思

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...