博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python迭代-如何使用生成器函数实现可迭代对象
阅读量:5216 次
发布时间:2019-06-14

本文共 635 字,大约阅读时间需要 2 分钟。

如何使用生成器函数实现可迭代对象

问题举例:

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

pn = PrimeNumbers(1, 30)

for x in pn:

  print(x)

 

输出结果:

2 3 5 7 11 13 17 19 23 29

 

解决思路

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

 

代码

from collections.abc import Iterableclass PrimeNumbers(Iterable):    def __init__(self, a, b):        self.a = a        self.b = b    def __iter__(self):        for k in range(self.a, self.b + 1):            if self.is_prime(k):                yield k    def is_prime(self, k):        return False if k < 2 else all(map(lambda x: k % x, range(2, k)))pn = PrimeNumbers(1, 30)for n in pn:    print(n)

 

参考资料:

 

转载于:https://www.cnblogs.com/marton/p/10765456.html

你可能感兴趣的文章
Foxmail:导入联系人
查看>>
在windows上安装ubuntu双系统
查看>>
JavaScript AJAX原生写法
查看>>
NodeJs实现WebSocket——express-ws
查看>>
NodeJS怎么实现WebSocket功能
查看>>
vue:axios二次封装,接口统一存放
查看>>
Js三大特性--封装、继承以及多态
查看>>
2019年8月2日07:51:10 马上要撤
查看>>
vue中router与route的区别
查看>>
js 时间对象方法
查看>>
网络请求返回HTTP状态码(404,400,500)
查看>>
Spring的JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate
查看>>
Mac下使用crontab来实现定时任务
查看>>
303. Range Sum Query - Immutable
查看>>
迪杰斯特拉算法---单源点最短路径
查看>>
【python】TCP/IP编程
查看>>
JVM 类型的生命周期学习
查看>>
图片加载失败显示默认图片占位符
查看>>
2018 ZJCPC
查看>>
【★】浅谈计算机与随机数
查看>>