python代码生成器,python中生成器函数
**
1、发电机* *
1.什么是发电机?Genterator,一种记录算法的机制,可以边循环边计算。2.列表派生更加耗时,并且消耗更多的系统内存。3.存储数据其实就是算法存储。4.它节省时间和内存。列表推导式的时间开销验证如下:
Import # time模块import sys #系统模块可以计算内存中变量的内存开销。计算时间需要一个固定的方法。Clock () list=[x for x in range (2,100,000,2)]costTime=time.clock()print(列表创建时间% g % cost time print(列表创建内存开销%d% sys.getsizeof(list))运行结果为:
列表创建时间为0.0590449。创建列表的内存开销是4290016生成器推导式的时间开销验证如下:。
Import # time模块import sys #系统模块可以计算内存中变量的内存开销。计算时间需要一个固定的方法。Clock () list=(x for x in range (2,100,000,2))costTime=time.clock()print(生成器创建时间% g % cost time print(生成器创建内存开销%d% sys.getsizeof(list))运行结果为:
列表创建时间为1.2402e-05。创建一个列表的内存开销是88 **
2.访问发电机元件的方法* *
生成器里面访问元素的第一种方式:for循环遍历
List=(x for x in range (2,10,2)) for i in list: print (i)运行结果为:
2468访问生成器中的元素的第二种方式:使用next方法访问
List=(x for x in range (2,10,2))print(next(list))print(next(list))#需要注意的是,如果生成器生成的数据超出范围,将会报告错误StopIteration访问生成器中的元素的第三种方式:使用__next__方法访问。
List=(x for x in range (2,10,2)) print (list。_ _下一个_ _())打印(列表。_ _下一个_ _())打印(列表。_ _ next _())运行如下:
246访问生成器中的元素的第四种方式:使用send()方法访问
List=(x for x in range (2,10,2)) print (list.send (None)) #注意:如果对第一个参数有要求,必须给出None参数。后续参数可以给到print(list . send( ABC ))print(list . send( EFG ))。运行结果是:
246 **
3.如何创建生成器**方式1:
(x for x in range(10)) #外面是()括号,是生成元;外面是[]括号,是列表派生方式2:yield 用在函数中。
Test():对于范围(5)中的x:yield xf=test()print(type(f))print(next(f))print(next(f))运行结果为:
类别“发电机”01
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。