Skip to main content
 首页 » 编程设计

python之使用 lambda 打印斐波那契数列并在 python 中映射或减少

2025年05月04日15think

  • 我想在 Python 中使用 lambda() 函数和 ma​​p() 或 reduce() 函数打印斐波那契数列。

注意:我在 SO 上进行了搜索,但只能找到与 Printing nth Fibonacci number 相关的问题。例如 Fibonacci numbers, with an one-liner in Python 3?

请您参考如下方法:

我有以下可行的解决方案:

一个。使用 lambda() + reduce():

 >>> fib = lambda n: reduce(lambda x, _: x+[x[-1]+x[-2]], range(n-2), [0, 1]) 
 >>> fib(10) 
 >>> [0, 1, 1, 2, 3, 5, 8, 13, 21, 34] 

注意:不能使用 x.append(x[-1]+x[-2])。给出 AttributeError(不知道为什么)

B.使用 lambda() + map():(结果必须使用变量)

 >>> result = [0,1] 
 >>> fib = lambda n: map(lambda _: result.append(result[-1] + result[-2]), xrange(n-2)) 
 >>> fib(10)                          ## Ignore its output ## 
 >>> result                           ## Stores the result ## 
 >> [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]