美文网首页
python中的迭代iterable

python中的迭代iterable

作者: 陆寒晨 | 来源:发表于2019-12-04 16:41 被阅读0次

    一、可迭代的类

    python中,可迭代的类一般是实现了itrnext方法的类。如下面代码,实现了iternext函数之后,就可以直接用for in 去遍历它,调用next方法,使得类的遍历变得简单快速。

    ### 非波拉契数列,迭代类实现
    class Fabi:
        def __init__(self, max):
            self.max = max
            self.n = 0
            self.a = 0
            self.b = 1
    
        def __iter__(self):
            return self
    
        def __next__(self):
            if self.n < self.max:
                r = self.b
                self.b = self.a + self.b
                self.a = r
                self.n = self.n + 1
                return r
            raise StopIteration
    
    
    if __name__ == '__main__':
        fabi = Fabi(5)
        for ff in fabi:
            print(ff)
    
    

    运行结果如下:


    运行结果

    二、yield函数

    def ydFun(max=5):
        n, a, b = 0, 0, 1
        while n < max:
            r = b
            yield r
            n = n + 1
            b = a + b
            a = r
    
    
    if __name__ == '__main__':
        fabi = ydFun(5)
        for i in fabi:
            print(i)
    

    将在循环中需要抛出的数据换成yield即可生成迭代生成器。
    程序输出如下图:


    yield输出

    yield中return的作用

    在一个 generator function 中,如果没有 return,则默认执行至函数完毕,如果在执行过程中 return,则直接抛出 StopIteration 终止迭代。

    【参考资料】
    【1】https://www.runoob.com/w3cnote/python-yield-used-analysis.html

    相关文章

      网友评论

          本文标题:python中的迭代iterable

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