如何修复我的函数?

2024-04-18 20:16:16 发布

您现在位置:Python中文网/ 问答频道 /正文

有人告诉我。。从评论到修复我的功能,让它看起来更“干净”。我试过很多次了。。但我不知道如何使用llambda来完成我想做的事情。我的代码有效。。这不是人们对我的要求。你知道吗

下面是我的代码和建议如何修复它。你知道吗

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])

任何事都有帮助。。我只是搞不清楚我该如何实施这些建议。你知道吗

这是我尝试的。你知道吗

def immutable_fibonacci(position):
    range=[None]*position
    next_series = lambda series, _ : series.append(series[-1] + series[-2])
    return reduce(next_series, range(position - 2), [1, 1])

Tags: oflambda代码reducereturndefpositionrange
1条回答
网友
1楼 · 发布于 2024-04-18 20:16:16

append函数返回None。你需要返回一个更新的数组

next_series = lambda series: series + [series[-1] + series[-2]]

另外,重命名range也没有任何作用。你知道吗

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。你知道吗

相关问题 更多 >