今日在图书馆翻阅Python书籍时,查看到一段很高级的代码分享给大家
问题如下:
根据一个数列0,1,1,2,3,5,8,13,32,……编写一个函数,要求返回这个数列小于某个上线N的所有项。
def fibonacci(N):
"""Return all fibonacci numbers up to N. """
a, b = 0, 1
while a <= N:
yield a
a, b = b, a + b
print(list(fibonacci(0))) # [0]
print(list(fibonacci(1))) # [0, 1, 1]
print(list(fibonacci(50))) # [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
这段代码可以尽可能的使用小内存生成很大的斐波拉契数列,并且使用了使用了生成器函数,即考虑了代码的性能也考虑了代码的优雅性。