📜  Python|使用 lambda 查找最多 n 的斐波那契数列

📅  最后修改于: 2022-05-13 01:54:39.787000             🧑  作者: Mango

Python|使用 lambda 查找最多 n 的斐波那契数列

斐波那契数是以下整数序列中的数字。

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ......

在数学术语中,斐波那契数列 Fn 由递归关系定义

使用 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 。然后在下一次迭代中,这将用作输入,并且它们的总和的结果将附加到列表中。