生成器
来源:互联网 发布:tizen mod3 安装 软件 编辑:程序博客网 时间:2024/05/16 23:39
生成器就是一个函数,python中带yield关键字的函数就是一个生成器。yield语句就是返回一个对象(值),和普通的函数用return返回值不同如果想取得值,那得调用next()函数,如:
生成器在内部记住了记住上一次返回时在函数体中的位置。对生成器函数的第二次(或第 n 次)调用跳转至该函数中间,而上次调用的所有局部变量和函数参数都保持不变。生成器不仅“记住”了它的数据状态;生成器还“记住”了它在流控制构造(在命令式编程中,这种构造不只是数据值)中的位置。
其实说白了就是,生成器记录了上次调用的数据与执行流程。
通过使用生成器的语法,可以免去写迭代器类的繁琐代码,如,上面的例子使用迭代类来实现,代码如下:
生成器语法
生成器表达式是在python2.4中引入的,当序列过长, 而每次只需要获取一个元素时,应当考虑使用生成器表达式而不是列表解析。
生成器表达式的语法和列表解析一样,只不过生成器表达式是被()括起来的,而不是[],如下:
生成器表达式并不真正创建数字列表, 而是返回一个生成器,这个生成器在每次计算出一个条目后,把这个条目“产生”(yield)出来。
生成器表达式使用了“惰性计算”,只有在检索时才被赋值( evaluated),所以在列表比较长的情况下使用内存上更有效。
0 0
- 生成器
- 生成器
- 生成器
- 生成器
- 生成器
- 生成器
- 生成器
- 生成器
- 生成器
- 生成器
- 生成器
- 生成器
- 生成器
- 生成器
- 生成器
- 生成器
- 生成器
- 生成器
- C语言文件打开方式简介
- LintCode-A + B 问题
- smem – Linux 内存监视软件
- lua 5.2的 luaL_newlib 的用法
- TCP的拥塞控制
- 生成器
- 软件测试基本素养练成记
- python 正则表达式中最常见的符号和字符
- LeetCode Note 1st,practice makes perfect
- 手工部署ceph
- 112.Remove Duplicates from Sorted List-删除排序链表中的重复元素(容易题)
- 如何彻底卸载MySQL
- Ngxtop-Nginx日志实时分析利器
- 配置文件&&DOM解析XML文件&&生成XML文件