zoukankan      html  css  js  c++  java
  • 斐波那契数列 yield 和list 生成

    def fab_demo4(max):
        a,n,b = 0,0,1
        while n < max:
            yield b  # 生成器走到这一步返回b,需要再次调用才能继续执行
    
            a,b = b,a+b
            n += 1
    
    f = fab_demo4(10)  # 调用了fab_demo4方法,返回内存地址
    print(list(f))  # lsit()将地址内数据显示,有一次调用方法,让yield后面的代码执行,指导循环结束
    

      

    [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
    

    下面是我一以前计算斐波那契数列的方法

    # [] 列表实现
    def fibonacci(num):
        fibs = [0, 1]
        for i in range(num - 2):
            fibs.append(fibs[-2] + fibs[-1]) # 倒数第二个+倒数第一个数的结果,追加到列表
        print(fibs)
    fibonacci(10)
    

      

    # yield 实现
    def fab_demo4(max):
        a,n,b = 0,0,1
        while n < max:
            yield b
            #print b
            a,b = b,a+b
            n+=1
    print(next(fab_demo4(10)))
    for i in fab_demo4(8):
        print(i)
    

      

    1
    1
    1
    2
    3
    5
    8
    13
    21
    
    Process finished with exit code 0
    

      

  • 相关阅读:
    文件拖拽上传
    30天自制操作系统笔记(第三天)
    PAT 1040到底有几个pat
    pat 1039 到底买不买
    pat 1038 统计同成绩学生
    pat 乙级1034
    pat 乙级1022
    pat 乙级1009
    pat 乙级1008
    pat 乙级1002
  • 原文地址:https://www.cnblogs.com/serpent/p/9863276.html
Copyright © 2011-2022 走看看