斐波那契数列 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

  

猜你喜欢

转载自www.cnblogs.com/serpent/p/9863276.html
今日推荐