如何在python生成器中运行所有斐波那契数

如何在python生成器中运行所有斐波那契数,python,python-2.7,generator,fibonacci,Python,Python 2.7,Generator,Fibonacci,所以我创建了一个函数,它基本上以一个值作为参数,并运行斐波那契序列。每次使用next时,它往往只打印1。我不知道它为什么这样做。当它到达yield关键字时,返回值1。到目前为止,我的 代码如下: def fibonacci(n): curr = 1 prev = 0 counter = 0 while counter < n: yield curr prev, curr = curr, prev + curr

所以我创建了一个函数,它基本上以一个值作为参数,并运行斐波那契序列。每次使用next时,它往往只打印1。我不知道它为什么这样做。当它到达yield关键字时,返回值1。到目前为止,我的 代码如下:

def fibonacci(n):
    curr = 1
    prev = 0
    counter = 0
    while counter < n:
        yield curr
        prev, curr = curr, prev + curr
        counter += 1


print(next(fibonacci(10)))
print(next(fibonacci(10)))
print(next(fibonacci(10)))
def fibonacci(n):
电流=1
prev=0
计数器=0
当计数器
以下是一个适合我的解决方案:

def fibonacci(n):
    fibonacci_list = []
    curr = 1
    prev = 0
    counter = 0
    while counter < n:
        prev, curr = curr, prev + curr
        counter += 1
        fibonacci_list.append(curr)

    return fibonacci_list;


x = fibonacci(10)
print(x)
def fibonacci(n):
斐波那契列表=[]
电流=1
prev=0
计数器=0
当计数器
告诉我是否有用


SLP

在使用生成器之前,您需要实例化它的对象,例如:

g = fibonacci(10)

print(next(g))
print(next(g))
print(next(g))
将返回以下输出:

1
1
2

在提出已经回答的问题之前,请先上网搜索。每次调用
fibonacci(10)
都可能会重复的创建一个新的生成器/迭代器,该生成器/迭代器再次以1开头。