Python生成器
2015-06-22 15:30
429 查看
生成器是可以当作iterator使用的特殊函数。它有以下优点:
1. 惰性求值;
2. 在处理大的列表时不需要一次性加载全部数据,可以减小内存使用;
除非特殊的原因,应该在代码中使用生成器。
生成器(generator) vs 函数(function)
生成器和函数的主要区别在于函数return a value, 生成器yield a value同时
记录以便在下次调用时从上次的状态下恢复执行。
生成器(generator) vs 迭代器(iterator)
* 迭代器是一个更一般的概念,它是一个有next方法和返回self的__iter__方
法的类。
* 每个生成器是一个迭代器,但迭代器不一定是生成器,生成器是有记录上次
执行状态的迭代器。从这点上看生成器有点像闭包,只是它记录的不是数据
的状态,记录的是执行过程中的状态。
生成器(generator) vs 续延(coninuations)
与生成器相比,续延更加灵活,续延允许你调用不同状态的执行过程,而不像生
成器这样直接返回。
创建生成器
在python可以使用以下方式创建生成器:
1.使用yield
2.使用generator expression
1. 惰性求值;
2. 在处理大的列表时不需要一次性加载全部数据,可以减小内存使用;
除非特殊的原因,应该在代码中使用生成器。
生成器(generator) vs 函数(function)
生成器和函数的主要区别在于函数return a value, 生成器yield a value同时
记录以便在下次调用时从上次的状态下恢复执行。
生成器(generator) vs 迭代器(iterator)
* 迭代器是一个更一般的概念,它是一个有next方法和返回self的__iter__方
法的类。
* 每个生成器是一个迭代器,但迭代器不一定是生成器,生成器是有记录上次
执行状态的迭代器。从这点上看生成器有点像闭包,只是它记录的不是数据
的状态,记录的是执行过程中的状态。
生成器(generator) vs 续延(coninuations)
与生成器相比,续延更加灵活,续延允许你调用不同状态的执行过程,而不像生
成器这样直接返回。
创建生成器
在python可以使用以下方式创建生成器:
1.使用yield
def Generator(x,y): for i in xrange(x): for j in xrange(y): yield(i, j)
2.使用generator expression
def Generator(x, y): return ((i, j) for i in xrange(x) for j in xrange(y))
相关文章推荐
- ZH奶酪:【Python】random模块
- python学习-subprocess模块
- python中的类,对象,方法,属性等介绍
- Python变量、运算符与表达式
- alex教学视频--购物表
- python常用模块
- python中if __name__ == '__main__':
- Python 中的方法、静态方法(static method)和类方法(class method)
- Python学习 之 switch语句
- Python编码规范
- Windows 下安装Python包(Numpy)的错误:Unable to find vcvarsall.bat
- Windows 下安装Python包(Numpy)的错误:Unable to find vcvarsall.bat
- Python lambda匿名函数
- Python学习 之 匿名函数
- 说说Python的装饰器模式与面向切面编程
- python字符串前缀 u和r的区别
- 零基础项目制学习python(二)
- python传值机制
- python传值机制
- python2与python3的区别