理解Python中的可重用项和生成器
我最近在Python中遇到了生成器的想法,因此我为自己制作了一个基本示例:理解Python中的可重用项和生成器,python,generator,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() 我想知道
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次才能打印所有内容。这是首先使用生成器的全部要点:
for i in x:
print i
这是一台发电机
0
1.
2.
3.
4.
5.
6.
7.
8.
9
静止发电机。。。
完成
这就是使用发电机的首要意义:
for i in x:
print i
这是一台发电机
0
1.
2.
3.
4.
5.
6.
7.
8.
9
静止发电机。。。
完成
您可以使用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
您可以使用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
对。实际上,您可以像遍历列表(或其他iterable)一样遍历生成器:
调用x.next()实际上并不特定于生成器——如果愿意,也可以使用列表来完成。但您不使用列表,而是使用for循环:与生成器相同。是的。实际上,您可以像遍历列表(或其他iterable)一样遍历生成器:
调用x.next()实际上并不特定于生成器——如果愿意,也可以使用列表来完成。但是你不需要列表,而是使用for循环:与生成器相同。如果我想使用
.next()
方法,我会把x
当作列表,然后使用.next()
来迭代列表?@MaxKim为什么要使用.next()
方法?如上图所示,您可以使用一个简单的for
-循环来迭代生成器。如果我想使用.next()
方法,我只需将x
视为一个列表,然后使用.next()
来迭代列表?@MaxKim为什么要使用.next()
方法?您可以使用简单的for
-循环遍历生成器,如上图所示。