容器是可迭代对象,可迭代对象调用 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