Python 如何将斐波那契序列保存到列表中?

Python 如何将斐波那契序列保存到列表中?,python,python-3.x,list,recursion,Python,Python 3.x,List,Recursion,但我想得到这样的列表:[0,1,1,2,3,…] 如何得到它 def fibonacci(n): lst = [] if n == 0: return 0 elif n == 1: return 1 else : f = fibonacci(n - 1) + fibonacci(n - 2) return f h = fibonacci(4) 或 如果希望fibonacci

但我想得到这样的列表:
[0,1,1,2,3,…]
如何得到它

def fibonacci(n): 
    lst = []
    if n == 0:   
        return 0  
    elif n == 1:  
        return 1  
    else :  
        f = fibonacci(n - 1) + fibonacci(n - 2)
        return f

h = fibonacci(4)

如果希望
fibonacci(0)
返回
[]

def fibonacci(n):
    lst = [0, 1]
    if n == 0:
        return [0]
    for i in range(2, n+1):
        lst.append(lst[i - 1] + lst[i - 2])
    return lst

print(fibonacci(0))  # ->[0]
print(fibonacci(1))  # ->[0,1]
print(fibonacci(2))  # ->[0,1,1]
print(fibonacci(3))  # ->[0,1,1,2]
print(fibonacci(4))  # ->[0,1,1,2,3]
print(fibonacci(10)) # ->[0,1,1,2,3,5,8,13,21,34,55]

这是一个效率极低的解决方案,但根据您当前的逻辑,您只需将
map
list
一起使用即可:

def fibonacci(n):
    lst = [0, 1]
    if n == 0:
        return []
    if n == 1:
        return [0]
    for i in range(2, n):
        lst.append(lst[i - 1] + lst[i - 2])
    return lst


print(fibonacci(0))  # ->[]
print(fibonacci(1))  # ->[0]
print(fibonacci(2))  # ->[0,1]
print(fibonacci(3))  # ->[0,1,1]
print(fibonacci(4))  # ->[0,1,1,2]
print(fibonacci(10)) # ->[0,1,1,2,3,5,8,13,21,34]

也有可能(不适用于
n@Kasramvd,我知道为什么这被标记为重复。但是,同样,OP是否想要最好的解决方案,或者是否想要学习如何返回应用于某个范围的函数的结果,也不清楚。在后一种情况下,
map
是解决方案。仍然可能是一个dup,但是另一个。@jpp我想你可以找到答案在上面提到的DUP中的所有问题中,如果问题是关于返回应用于某个范围的函数的结果,OP应该在标题或问题正文中提到。尽管如此,我添加了三个副本,显示了这个问题以前被问了多少。@Kasramvd,OP可能不知道
映射
范围
,所以可能没有必要的词汇表。但我确实喜欢dup目标,它们应该保留:)。
h = list(map(fibonacci, range(10)))

print(h)

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
def fib(n, lst=None):
    if lst is None:
        lst = [0, 1]
    while len(lst) < n:
        lst.append(lst[-2] + lst[-1])
    return lst