美文网首页
如何使用生成器函数实现可迭代对象

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

作者: 以七v为书 | 来源:发表于2018-12-18 16:40 被阅读0次

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

    解决方案:

    • 将该类的iter方法实现成生成器函数,每次yield返回一个素数
    def f():
        print 'in f().1'
        yield 1
    
        print 'in f().2'
        yield 2
    
        print 'in f().3'
        yield 3
    

    此处直接调用f()并不会得到值

    g = f()
    

    生成器函数与迭代器对象同样拥有next()

    print f().next()
    

    虽然返回了yield,但是保存了程序运行的状态

    生成器对象也是一个可迭代对象iter返回它本身。
    也是一个迭代器对象,拥有next()方法

    class PrimeNumber:
        def __init__(self,start,end):
            self.start = start
            self.end = end
        def isPrimeNumber(self,k):
                if k < 2:
                    return False
                for i in xrange(2, k):
                    if k % i == 0:
                        return False
                return True
    
        def __iter__(self):
            for k in xrange(self.start, self.end +1):
                if self.isPrimeNumber(k):
                    yield k
    
    for x in PrimeNumber(1,30):
        print x
    

    相关文章

      网友评论

          本文标题:如何使用生成器函数实现可迭代对象

          本文链接:https://www.haomeiwen.com/subject/slplkqtx.html