Python |使用 lambda

查找斐波那契数列 up n

原文:https://www . geesforgeks . org/python-find-Fibonacci-series-upto-n-using-lambda/

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

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

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

Fn= Fn-1+Fn-2,种子值 F 0 = 0,F 1 = 1。

用 lambda 函数求斐波那契数列。

代码#1:使用λ和归约方法

from functools import reduce

fib = lambda n: reduce(lambda x, _: x+[x[-1]+x[-2]],
                                 range(n-2), [0, 1])

print(fib(5))

Output:

[0, 1, 1, 2, 3]

说明:

取前两个参数的列表是 0 和 1,像x[-1】一样添加,即 0 和x[-2】即 1,并追加到变量 x,有一个类型转换到列表,由于 reduce() 方法,相同的函数调用,由于范围函数,这个时间参数发生变化,然后将这个添加到以前的结果中,并再次存储到列表中。

代码#2:使用λ和映射功能

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))

Output:

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

说明: 我们正在取已经有 0 和 1 的列表 fib_list 。然后在下一次迭代中,这将被用作输入,并且它们的求和结果将被追加到列表中。