简单的Python生成器跳过for循环的步骤

时间:2016-02-24 15:20:03

标签: python loops for-loop generator

我试着理解生成器,我写道:

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 ......我已经盯着这个太久了。我想念的是什么?

2 个答案:

答案 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循环从生成器获取一个值,然后忽略它并获取另一个值进行打印。