- 我想在 Python 中使用 lambda() 函数和 map() 或 reduce() 函数打印斐波那契数列。
注意:我在 SO 上进行了搜索,但只能找到与 Printing nth Fibonacci number 相关的问题。例如 Fibonacci numbers, with an one-liner in Python 3?
请您参考如下方法:
我有以下可行的解决方案:
一个。使用 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]
