• python-迭代器与生成器1


    python-迭代器与生成器1

    迭代器与生成器
    列表的定义
    列表生成式:作用使代码更加简洁
    通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。
    而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面
    几个元素,那后面绝大多数元素占用的空间都白白浪费了。

    所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续
    的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边
    计算的机制,称为生成器:generator。

    a=[1,2,3]
    print(a)
    a=[i*2 for i in range(10)] #也可以是传一个函数[fun for i rang(10)]
    print(a)
    
    #其他方式来完成:
    a=[]
    for i in range(10):
        a.append(i*2)
    print(a)
    
    
    
    打印结果
    [1, 2, 3]
    [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
    [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
    
    
    生成器:只有在调用时才会生成相应的数据,调用哪次就参生哪次。
    只记录当前位置
    只有一个方法_next_();2.7版本用netx();
    (i*i for in in range(10))
    
    例1:斐波那契
    def fib(max):
        n,a,b=0,0,1
        while n<max:
            print(b)
            a,b=b,a+b
            n=n+1
        return "----done______"
    fib(10)
    
    打印结果
    ------------------
    1
    1
    2
    3
    5
    8
    13
    21
    34
    55
    
    例2  斐波那契
    def fib(max):
        n,a,b=0,0,1
        while n<max:
            print(b)
            #yield b
            a,b=b,a+b     #t=(b,a+b) 是一个tuple
            n=n+1
        return "----done______"
    fib(10)
    打印结果
    ------------------
    1
    1
    2
    3
    5
    8
    13
    21
    34
    55
    
    
    例3:生成器
    def fib(max):
        n,a,b=0,0,1
        while n<max:
            #print(b)
            yield b
            a,b=b,a+b     #t=(b,a+b) 是一个tuple
            n=n+1
        return "----done______"
    #print(fib(10))
    f=fib(10)
    print(f.__next__())
    print(f.__next__())
    
    打印结果
    ------------------
    1
    1
    
    
    
    例4:
    
    def fib(max):
        n,a,b=0,0,1
        while n<max:
            #print(b)
            yield b
            a,b=b,a+b     #t=(b,a+b) 是一个tuple
            n=n+1
        return "----done______"
    #print(fib(10))
    f=fib(10)
    print(f.__next__())
    print(f.__next__())
    print("=======”"开始 ")
    
    
    打印结果
    --------------
    1
    1
    =======开始 
    2
    3
    5
    8
    13
    21
    34
    55
  • 相关阅读:
    如何安装Tomcat服务器
    浅谈数据库中的锁机制
    彻底理解js中this的指向
    Javascript模块化编程的写法
    滚屏加载--无刷新动态加载数据技术的应用
    JavaScript正则表达式
    CSS:水平居中与垂直居中
    Linux常用命令大全
    HTML的元素嵌套规则
    clearfix清除浮动进化史
  • 原文地址:https://www.cnblogs.com/kezi/p/12019463.html
Copyright © 2020-2023  润新知