您现在的位置是:网站首页 > 博客日记 >

python中队列和生成器的结合应用

作者:YXN-python 阅读量:98 发布日期:2022-12-12

队列(一种特殊的线性表)和生成器(一种特殊的函数),下面简单举个例子:

from collections import deque


def fibonacci():
    while True:
        ilist = deque()  # 初始化一个队列
        x, y = 0, 1
        for _ in range(10):
            ilist.extend([y])  # 加入到队列
            x, y = y, x + y
        while ilist:
            yield ilist.popleft()  # # 删除并返回队列头部的元素


f = fibonacci()


# 获取下一个斐波那契数
def get_fibonacci_next():
    return next(f)


if __name__ == "__main__":
    for _ in range(15):  # 运行结果:1 1 2 3 5 8 13 21 34 55 1 1 2 3 5 
        print(get_fibonacci_next(), end=' ')

 

这段代码实现了一个基于队列的快速的斐波那契数列生成器。

函数 fibonacci() 用于生成斐波那契数列,使用 Python 内置 collections 模块中的双端队列deque来实现。首先,初始化了一个空的队列,然后循环生成前 10 个斐波那契数,并将它们加入到队列中。需要注意的是:while ilist放在for循环外面的话是一次性执行for循环,也就是获取下一个值时队列里存在10个值;而当把while ilist放在for循环里的话是每次获取下一个值的时候才添加值到队列,也就是队列里始终只有一个值,一直取一个用一个,实际情况要根据需求修改。

函数 get_fibonacci_next() 用于获取下一个斐波那契数。它返回了 f 生成器的下一个元素,也就是 f 中的下一个斐波那契数。

使用 range() 函数循环打印出前 15 个斐波那契数

YXN-python

2022-12-12