生成器推导式、生成器函数

2020-02-22  本文已影响0人  清水秋香
什么是生成器:

生成器是用来创建数据序列的一种对象
使用它可以迭代庞大的序列,且不需要在内存中创建和存储整个序列
通常生成器是为迭代器产生数据的 --迭代器的一种实现

生成器推导式

与推导式语法一样
(<表达式> for <变量> in <可迭代对象> if <逻辑条件>)
返回一个生成器对象,也是可迭代对象
但生成器并不立即产生全部元素,仅在用到元素的时候才生成,可以极大节省内存

>>> agen = (x*x for x in range(10))
>>> next(agen)
0
>>> for i in agen:
...     print(i)
... 
1
4
9
16
25
36
49
64
81
>>> 
生成器函数

如果创建一个比较大的序列,生成器推导式将会比较复杂,一行表达式无法容纳,这是可以定义生成器函数。
生成器函数与普通函数:
生成器函数定义与普通函数相同,只是将return换成了yield

>>> def even_number(max):
...     n=0
...     while n < max:
...             yield n
...             n+=2
... 
>>> a = even_number(10)
#第一次取出的是0
>>> next(a)
0
#第二次取数时,会从n += 2 开始执行 给n赋值为2 进入循环 在yield出来 等待下次取数时再次执行。
>>> next(a)
2
>>> for i in a:
...     print(i)
... 
4
6
8
>>> 
上一篇 下一篇

猜你喜欢

热点阅读