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

实际案列:
实现一个可迭代对象的类,它能迭代出给定范围内所有素数:
pn = PrimeNumbers(1,30)
for k in pn:
print(k)
输出结果:2 3 5 7 11 13 17 19 23 29

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

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


pn = PrimeNumbers(1,30)

for x in pn:
    print(x) #2 3 5 7 11 13 17 19 23 29
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容