我试着理解生成器,我写道:
def counter():
n = 1
while n <= 10:
yield n
n += 1
如果我然后手动输入
c = counter()
......反复跟随
print c.next()
我得到1,2,3等等但是如果我跑
for i in c:
print c.next()
我得到2,4,6,8 ......我已经盯着这个太久了。我想念的是什么?
答案 0 :(得分:3)
.next()迭代你刚刚创建的生成器,就像你做的那样
for i in c
这就是为什么你的第二种方法只有对号
只需输入:
for i in c:
print i
答案 1 :(得分:1)
for i in c:
print c.next()
与
基本相同c_iter = iter(c)
while True:
try:
i = c_iter.next()
except StopIteration:
break
print c_iter.next()
你的for
循环从生成器获取一个值,然后忽略它并获取另一个值进行打印。