繁体   English   中英

使用Lambda打印Fibonacci系列并在python中映射或缩小

[英]Print Fibonacci Series using lambda and map or reduce in python

  • 我想使用带lambda()函数和map()或reduce()函数的Python 打印Fibonacci系列

注意:我确实在SO上进行搜索,但是只能找到与打印第n个斐波那契数有关的问题。 例如斐波那契数,在Python 3中有一个内衬?

我有以下工作解决方案:

A.使用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] 

斐波那契使用reduce()和lambda()

from functools import reduce

def fibonacci(count):
    sequence = (0, 1)

    for _ in range(2, count):
        sequence += (reduce(lambda a, b: a + b, sequence[-2:]), )

    return sequence[:count]

print(fibonacci(10))

输出值

(0, 1, 1, 2, 3, 5, 8, 13, 21, 34)

斐波那契使用map()和lambda()

def fibonacci(count):
    sequence = [0, 1]

    any(map(lambda _: sequence.append(sum(sequence[-2:])), range(2, count)))

    return sequence[:count]

print(fibonacci(10))

输出值

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

代码段:

fibonacci = lambda number: number if number <= 1 else fibonacci(number - 1) + fibonacci(number - 2);
listOfFibonacciNumbers = list(map(fibonacci, range(0, 20, 1)));
print(listOfFibonacciNumbers);

输出:

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181]

您可以输入20,代替20。 我希望这有帮助:)

您可以使用reduce()和lambda()在斐波那契尝试

def Fib(count):
    first =[0,1]
    for i in range(0,count-2):
        first.append(reduce(lambda x,y : x+y,first[-2:]))

    print(first) 
Fib(10)

输出

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

尝试使用此代码使用LAMBDA打印前10个斐波那契数字

fib = lambda n:如果n <= 1则为n,否则fib(n-1)+ fib(n-2)

对于范围(10)中的i:print(fib(i))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM