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

Sah*_*lra 1 python lambda python-2.7 python-3.x

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

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

Sah*_*lra 6

我有以下工作解决方案:

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]
Run Code Online (Sandbox Code Playgroud)

注意:无法使用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]
Run Code Online (Sandbox Code Playgroud)