Python:生成器失败

Python:生成器失败,python,generator,Python,Generator,这个生成器应该产生范围中(0,i)的所有整数,但是每次调用next(),它都会不断返回0。为什么? 谢谢 不,没有。这是输出: def sp(): i = 0 while True: for j in range(i): yield(j) i+=1 >s=sp() >>> >>>美国下一个() 0 >>>美国下一个() 0 >>>美国下一个() 1. >>>美国下一个() 0 >>>美国下一个() 1. >>>美国下一个(

这个生成器应该
产生
范围
(0,i)
的所有整数,但是每次调用
next()
,它都会不断返回
0
。为什么?


谢谢

不,没有。这是输出:

def sp():
    i = 0
    while True:
        for j in range(i):
            yield(j)
        i+=1
>s=sp()
>>>
>>>美国下一个()
0
>>>美国下一个()
0
>>>美国下一个()
1.
>>>美国下一个()
0
>>>美国下一个()
1.
>>>美国下一个()
2.
>>>美国下一个()
0
>>>美国下一个()
1.
>>>美国下一个()
2.
>>>美国下一个()
3.
>>>美国下一个()
0
>>>美国下一个()
1.
>>>美国下一个()
2.
>>>美国下一个()
3.
>>>美国下一个()
4.

这正是你所期望的。每次从0开始,转到
i
是什么,然后再从0开始回到
i

的下一个值,你不能只执行
sp().next()
。您需要实例化(?)生成器:
s=sp();s、 next();s、 next()…但是如果你只想要0,1,2。。。那你就不想打电话了。哦,我知道我的错在哪里了。谢谢
>>> s=sp()
>>> s
<generator object sp at 0x102d1c690>
>>> s.next()
0
>>> s.next()
0
>>> s.next()
1
>>> s.next()
0
>>> s.next()
1
>>> s.next()
2
>>> s.next()
0
>>> s.next()
1
>>> s.next()
2
>>> s.next()
3
>>> s.next()
0
>>> s.next()
1
>>> s.next()
2
>>> s.next()
3
>>> s.next()
4