简单的 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
循环正在从生成器获取一个值,然后忽略它并获取另一个值进行打印。
为了理解生成器,我写道:
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
循环正在从生成器获取一个值,然后忽略它并获取另一个值进行打印。