3-3使用生成器函数实现可迭代对象
来源:互联网 发布:js日期比大小 编辑:程序博客网 时间:2024/06/07 19:12
# -*- coding:utf-8 -*-"""实际案例:实现一个可迭代对象的类,它能迭代出给定范围内的所有素数:pn = PrimeNumber(1, 30)for k in pn: print k输出结构:2 3 5 7 11 13 17 19 23 29解决方案:将该类的__iter__方法实现成生成器函数,每次yield返回一个素数"""def f(): print('in f(), 1') yield 1 print('in f(), 2') yield 2 print('in f(), 3') yield 3g = f()# 生成器对象和迭代器对象在行为上非常相似,都支持可迭代接口__next__print(g.__next__())# 如果想调用生成器函数的语句,需要调用__next__函数,返回的结果就是yield返回的结果# 虽然f函数被yield临时返回,但保留了程序运行的状态.再次调用,会继续沿着上次进行print(g.__next__())print(g.__next__())# print(g.__next__()) # 抛出异常:StopIterationfor x in g: # 可以代替上面几句代码 print(x)print(g.__iter__() is g) # g对象既实现了迭代器接口__next__,又实现了可迭代接口__iter__# 调用g的可迭代接口,返回的就是g自身class PrimeNumbers(object): def __init__(self, start, end): self.start = start self.end = end def isPrimeNum(self, k): if k < 2: return False 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.isPrimeNum(k): yield kfor x in PrimeNumbers(1, 100): print(x)
0 0
- 3-3使用生成器函数实现可迭代对象
- 如何使用生成器函数实现可迭代对象
- python 3-3 如何使用生成器函数实现可迭代对象 __iter__,yield
- python-7-如何使用生成器函数实现可迭代对象?
- python如何使用生成器函数实现可迭代对象
- 我所理解的生成器(关键词:生成器对象/生成器/生成器表达式/生成器函数/生成器类/generator/yield/__iter__)
- 菜鸟wz的Python周记(3)使用函数制作验证码生成器
- Python迭代器,可迭代对象,生成器
- 生成器函数
- 生成器函数
- Makefile生成器,使用C++和Boost实现
- Python使用生成器实现生产者消费者模式
- Python可迭代对象,迭代器,生成器的区别
- Python 可迭代的对象、迭代器和生成器
- Python 可迭代的对象、迭代器和生成器
- 迭代器、可迭代对象and初识生成器
- Python3.可迭代对象_迭代器_生成器
- python迭代,可迭代对象,生成器,迭代器--
- 基于workerman的实时推送,摒弃ajax轮询
- 解决添加新的图片编译不通过
- java基础一 了解java
- SQL中的四种语言DML DDL DCL TCL
- 顺序表---模板类实现
- 3-3使用生成器函数实现可迭代对象
- 【运营商】重庆有线破局之道
- 3-4进行反向迭代以及实现反向迭代
- c++ 容器vector的基本操作
- 给出每个站点之间的最短距离,求出最短路径,用unordered_map来实现,让你实现find_cheapest_transform函数
- Glide源码分析(一)——DiskLruCache磁盘缓存的实现
- 2013第四届蓝桥杯预赛试题本科c++前缀判断
- Sql profiles-->使用sql tuning生成sql profile
- LeetCode:535. Encode and Decode TinyURL