首页 > 代码库 > 【代码学习】PYTHON 生成器

【代码学习】PYTHON 生成器

一、生成器

一遍循环一遍计算的机制,称为生成器

二、生成器的特点:

1、节约内存

2、迭代到下一次的调用时,所使用的参数都是第一次所保留下的,即是说,在整个所有函数调用的参数都是第一次所调用时保留的,而不是新创建的

三、创建方法

1、把列表生成式的[]改为()

#列表
L = [x*2 for x in range(5)]
print L
#生成器
G = (x*2 for x in range(5))
print G

以上代码运行结果

[0, 2, 4, 6, 8]
<generator object <genexpr> at 0x0000000002E40AF8>

2、yield 生成

yield 自动终止返回结果。

循环从终止的地方向下进行

def  creatNum():
    print ("----start----")
    i = 0
    while i < 5:
        temp = yield i
        print(temp)
        i+= 1
#创建一个生成器对象
a = creatNum()
#让对象开始执行,第一次从头开始执行,如果之前执行过,就从上一次停止的地方开始执行
next(a)

以上代码运行结果

----start----
>>> next(a)
None
1
>>> next(a)
None
2
>>> a.send("SQYY")
SQYY
3
>>> next(a)
None
4
>>> 

四、补充:

send()

执行到yield时,gen函数作用暂时保存send发送过来的值

c.next()等价c.send(None)

【代码学习】PYTHON 生成器