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

Simple Python generator skips steps with for loop

为了理解生成器,我写道:

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...我已经盯着这个看太久了。请问我错过了什么?

.next() 迭代你刚刚创建的生成器,就像你做的那样

for i in c 

这就是为什么你在第二种方法中只有对号

只需输入:

for i in c:
    print i
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 循环正在从生成器获取一个值,然后忽略它并获取另一个值进行打印。