生成器
-
使用场景
在使用列表时,很多时候我们不会一下子使用全部数据,通常都是一个一个使用,但是当数据量比较大的时候,定义一个大的列表将会是内容使用突然增大。为了解决此类问题,python中引入了生成器的概念。
-
使用方式
- 方式1:将列表生成式的[]改为()
# 列表生成式 # lt = [i for i in range(10)] # 生成器方式1:将列表生成式的[]改为() lt = (i for i in range(3)) # 可以转换为列表 # print(list(lt)) # 可以进行遍历 # for i in lt: # print(i, end=' ') # 可以一个一个提取,当遍历完毕后再使用next会报StopIteration错 print(next(lt)) print(next(lt)) print(next(lt))
-
方式2:在函数中是使用yield
def test(n): for i in range(1, n+1): # 执行到此处,函数会返回yield后的值,然后停在这里 yield i t = test(3) # print(t) # 可以使用next一个一个提取 # print(next(t)) # print(next(t)) # print(next(t)) # print(next(t)) # 可以遍历 # for i in t: # print(i) # 可以转换为列表 print(list(t))
-
总结:
- 生成器对象保存的特定数据的生成算法,但并不是保存所有的数据
- 生成器使用任意一种方式操作,都只能操作一遍
- 生成器可以做的操作:遍历、转换为列表、next