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