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