python-生成器、迭代器

74 阅读1分钟

容器是可迭代对象,可迭代对象调用 iter() 函数,可以得到一个迭代器。迭代器可以通过 next() 函数来得到下一个元素,从而支持遍历。

生成器是一种特殊的迭代器(注意这个逻辑关系反之不成立)。

使用生成器,你可以写出来更加清晰的代码;合理使用生成器,可以降低内存占用、优化程序结构、提高程序速度

生成器的概念应运而生,在你调用 next() 函数的时候,才会生成下一个变量。生成器在 Python 的写法是用小括号括起来,(i for i in range(100000000)),即初始化了一个生成器

a = (i for i in range(0, 10))
b = [i for i in range(0, 10)]

print(next(a))
print(next(a))
print(next(a))
print(next(a))
print(next(a))

print(type(a))
print(type(b))


0
1
2
3
4
<class 'generator'>
<class 'list'>

写一个生成器

def generator():
    for i in range(0, 10):
        print(i)
        yield

ins = generator()
next(ins)
next(ins)
next(ins)
next(ins)

0
1
2
3