📜  斐波那契数列 python 生成器 - Python (1)

📅  最后修改于: 2023-12-03 15:40:05.309000             🧑  作者: Mango

斐波那契数列 Python 生成器

斐波那契数列是指:第一项、第二项为1,从第三项起,每一项为前两项之和。也就是说,这个数列的前几项为:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...

在 Python 中,我们可以使用生成器来生成斐波那契数列,下面是一个示例:

def fib():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

这里我们使用了 yield 语句来指定一个生成器。yield 语句可以让函数在运行时暂停,并返回一个值给调用方,同时保留函数的所有状态,以便函数在下一次调用时从其离开的地方继续执行。

fib() 函数中,我们先初始化了两个变量 ab,分别为数列的前两项(0 和 1)。然后通过一个无限循环(while True:)来不断地生成数列中的下一项(yield a),并实现数列的递推式 a, b = b, a + b

我们可以使用 for 循环来输出前 n 项斐波那契数列:

for i, f in enumerate(fib()):
    if i >= n:
        break
    print(f)

其中 enumerate(fib()) 会生成一个迭代器,每次迭代会返回一个包含当前项的下标和值(即 (i, f))的元组。我们通过判断下标是否超过了 n 来停止循环。

完整代码:

def fib():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

n = 10
for i, f in enumerate(fib()):
    if i >= n:
        break
    print(f)

输出结果:

0
1
1
2
3
5
8
13
21
34

这就是使用生成器在 Python 中生成斐波那契数列的方法。