注:了解生产器函数,查询:Python:生成器函数
案例:
- 需求:实现一个可迭代的类,它能迭代出给定范围内所有素数;
- 思路:1)构造一个类(如:PrimeNumbers()),给定两个参数,如:1、100,来限定搜索的范围;2)对实例(如:pn)进行迭代,得到目标数据;
-
方案:使用生成器函数,来实现可迭代对象;
- 将该类的__iter__方法实现成生成器函数,每次yield返回一个素数;
#在问题8~9中,实现可迭代对象的方法:通过实现一个包含next方法的迭代器对象的类,来实现可迭代对象;
- pn = PrimeNumbers(1, 100)
- for k in pn:
- print(k)
代码:
class PrimeNumbers: 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 k for x in PrimeNumbers(1, 100): print(x)