理解Python中的迭代和生成器

时间:2013-07-14 15:13:15

标签: python generator

我最近在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次来打印所有内容。

3 个答案:

答案 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