Python:如何使用生产器函数实现可迭代对象

注:了解生产器函数,查询:Python:生成器函数

案例:

  1. 需求:实现一个可迭代的类,它能迭代出给定范围内所有素数;
  2. 思路:1)构造一个类(如:PrimeNumbers()),给定两个参数,如:1、100,来限定搜索的范围;2)对实例(如:pn)进行迭代,得到目标数据;
  3. 方案:使用生成器函数,来实现可迭代对象;

    • 将该类的__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)
posted @ 2018-04-07 15:24  何永灿  阅读(179)  评论(0编辑  收藏  举报