注意:我确实搜索了SO,但只能找到与打印nth Fibonacci数相关的问题。例如Fibonacci numbers, with an one-liner in Python 3?
答案 0 :(得分:5)
我有以下工作解决方案:
一个。使用 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]
答案 1 :(得分:1)
斐波那契使用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]
答案 2 :(得分:1)
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。 希望对您有所帮助:)
答案 3 :(得分:0)
您可以使用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]
答案 4 :(得分:0)
这可能对您有帮助!
使用 reduce()
和 lambda
from functools import reduce
fibonacci_seq = [0, 1]
n = 10
reduce(lambda a, b: len(fibonacci_seq) < n and (fibonacci_seq.append(a+b) or a+b), fibonacci_seq)
(fibonacci_seq.append(a+b) or a+b)
:当 <any_list>.append(ele)
返回 None
时,我使用它将系列中的下一个元素附加到 fibonacci_seq
。 or
与 a+b
结合允许将 a+b
作为结果返回给 reduce()
函数,以使用序列中的下一个元素对其进行操作。
len(fibonacci_seq) < n
:一旦 len(list) 达到 n,列表就会停止增长。
输出
print(fibonacci_seq)
>>> [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
上述方法返回 n = 2 以后的正确序列。
答案 5 :(得分:-1)
尝试使用LAMBDA打印前10个Fibonacci数字的代码
fib = lambda n:n,如果n <= 1,则为fib(n-1)+ fib(n-2)
对于范围(10)中的i,:print(fib(i))