Python|使用 lambda 查找最多 n 的斐波那契数列
斐波那契数是以下整数序列中的数字。
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ......
在数学术语中,斐波那契数列 Fn 由递归关系定义
Fn = Fn-1 + Fn-2 with seed values F0 = 0 and F1 = 1.
使用 lambda函数查找斐波那契数列。
代码 #1:通过使用 lambda 和 reduce 方法
from functools import reduce
fib = lambda n: reduce(lambda x, _: x+[x[-1]+x[-2]],
range(n-2), [0, 1])
print(fib(5))
输出:
[0, 1, 1, 2, 3]
解释 :
采用前两个参数的列表是 0 和 1,并添加x[-1]即 0 和x[-2]即 1 并附加到变量 x。存在到列表的类型转换,并且由于reduce()
方法,相同的函数调用并且由于范围函数这次参数更改,然后将其添加到先前的结果并再次将其存储到列表中。
代码 #2:通过使用 lambda 和 map函数
def fibonacci(count):
fib_list = [0, 1]
any(map(lambda _: fib_list.append(sum(fib_list[-2:])),
range(2, count)))
return fib_list[:count]
print(fibonacci(10))
输出:
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
解释 :
我们正在获取已经有 0 和 1 的列表fib_list 。然后在下一次迭代中,这将用作输入,并且它们的总和的结果将附加到列表中。