我最近在Python中遇到了生成器的想法,所以我为自己做了一个基本的例子:
def gen(lim):
print 'This is a generator'
for elem in xrange(lim):
yield elem
yield 'still generator...'
print 'done'
x = gen
print x
x = x(10)
print x
print x.next()
print x.next()
我想知道是否有办法迭代我的变量x
并且必须写出print x.next()
11次来打印所有内容。
答案 0 :(得分:2)
首先使用发电机的重点是:
for i in x:
print i
This is a generator 0 1 2 3 4 5 6 7 8 9 still generator... done
答案 1 :(得分:2)
是。实际上,您可以像生成列表(或其他可迭代的)一样遍历生成器:
x = gen(11)
for i in x:
print i
调用x.next()实际上并不特定于生成器 - 如果您愿意,也可以使用列表。但是你没有使用列表,你使用for循环:与生成器相同。
答案 2 :(得分:1)
您可以使用for循环来迭代生成器。
def gen(lim):
print 'This is a generator'
for elem in xrange(lim):
yield elem
yield 'still generator...'
print 'done'
for x in gen(10):
print x