生成器(Generators)

2017-07-20  本文已影响0人  tf_dejs

生成器(Generators)

首先要理解迭代器(iterators)

生成器

生成器也是一种迭代器,但是你只能对其迭代一次。这是因为它们并没有把所有的值存在内存中,而是在运行时生成值。你通过遍历来使用它们,要么用一个“for”循环,要么将它们传递给任意可以进行迭代的函数和结构。大多数时候生成器是以函数来实现的。然而,它们并不返回一个值,而是yield(暂且译作“生出”)一个值。

def generator_function():
    for i in range(10):
        yield i

for item in generator_function():
    print(item)

i.next()

列表表达式-生成器

g = (i**2 for i in range(1, 11))
type(g)
generator
g.next()
1
...

函数生成器

def genfunc(n):
    for i in range(n):
        yield i

gf = genfunc(11)
type(gf)
generator
gf.next()
0
上一篇 下一篇

猜你喜欢

热点阅读