美文网首页
迭代器和生成器

迭代器和生成器

作者: 她即我命 | 来源:发表于2018-07-31 19:09 被阅读11次

    生成器:
    a. 可以看成一个存储多个数据的容器。需要的时候就生成一个,里面的数据只能从前往后一个一个的生成,不能跳跃不能从后往前。生成的数据,不能再生成了。
    b. 获取生成器里面的数据,需要使用next()方法
    c. 只要函数声明中有yield关键字,不再是单纯的函数,而是变成一个生成器了

    和列表比较:
    列表存数据,数据必须是实实在在存在的数据,一个 数据会占用一定的内存空间
    生产生成器存数据,存的是产生数据的算法,

    if __name__ == '__main__':
        # 列表
        list1 = list(i for i in range(10))
        print(list1)
    
    
        # x 就是一个生成器,用来产生数据
        x = (i for i in range(10))
        print(x)
    
        print(x.__next__())
        print(x.__next__())
    
        print("===")
        number1 = 100
        print(x.__next__())
    
    
    # 1.1.2.3.5.8.13.21.....(feibo数列)
    def xu_lie(n):
        pre_1 = 1
        pre_2 = 1
        for x in range(1,n+1):
            if x ==1 or x == 2:
                current  = 1
                yield current
                continue
            current = pre_1 +pre_2
            pre_1,pre_2=pre_2,current
            # print(current)
            yield current
    
    xulie = xu_lie(10)
    # 不管隔了多远,下次一出现,都会接着上面一个出现
    print(xulie.__next__())
    print(xulie.__next__())
    print(xulie.__next__())
    
    # 遍历生成器
    for x in xulie:
        print(x)
    

    相关文章

      网友评论

          本文标题:迭代器和生成器

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