Python 如何修复我的函数?
有人告诉我。。从评论到修复我的功能,让它看起来更“干净”。我已经试过很多次了。。但我不知道如何使用llambda来完成我想做的事情。我的代码有效。。这不是人们对我的要求 下面是我的代码,以及如何修复它的建议Python 如何修复我的函数?,python,function,Python,Function,有人告诉我。。从评论到修复我的功能,让它看起来更“干净”。我已经试过很多次了。。但我不知道如何使用llambda来完成我想做的事情。我的代码有效。。这不是人们对我的要求 下面是我的代码,以及如何修复它的建议 def immutable_fibonacci(position): #define a lambda instead of def here def compute_fib (previousSeries, ignore): newList = previ
def immutable_fibonacci(position):
#define a lambda instead of def here
def compute_fib (previousSeries, ignore):
newList = previousSeries
if len(newList) < 2: # Do this outside and keep this function focused only on returning a new list with last element being sum of previous two elements
newList.append(1)
else:
first = newList[-1]
second = newList[-2]
newList.append(first+second)
return newList
range=[None]*position
return reduce(compute_fib, range, [])
#Above is too much code. How about something like this:
#next_series = lambda series,_ : (Use these instead of the above line)
#return reduce(next_series, range(position - 2), [1, 1])
append
函数返回None。您需要返回一个更新的数组
next_series = lambda series: series + [series[-1] + series[-2]]
此外,重命名范围
也没有任何作用
def immutable_fibonacci(position):
next_series = lambda series: series + [series[-1] + series[-2]]
return reduce(next_series, range(position - 2), [1, 1])
这是假设您只调用位置>=2的函数。按照惯例,fib(0)是0,fib(1)是1。一般来说,重新定义
范围可能不是一个好主意。
什么是不可变的?该代码的整个设计都很疯狂。为什么要使用reduce
和None
值列表,而不是简单的for
循环?这仍然不起作用。。。虽然这比我做的更有意义。我得到一个错误,列表对象在第3行不可调用。它需要计算长度为0或1的斐波那契序列吗?基本上,我要发送的位置是6。它应该计算1,1,2,3,5,8
def immutable_fibonacci(position):
next_series = lambda series: series + [series[-1] + series[-2]]
return reduce(next_series, range(position - 2), [1, 1])