内容来自雪峰的官方网站。

generator

1、引入generator的原因。

通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。

2、创建一个generator的方式

第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator。

>>> g = (x * x for x in range(1 , 4))
>>> g
<generator object <genexpr> at 0x000001F706186990>

3、打印出generator的每一个元素。

1) next(g)

2) for n in g: print(n)

最新文章

  1. Python学习【第二篇】Python入门
  2. mysql跟踪和日志
  3. ArcEngine10.1二次开发错误: 无法嵌入互操作类型,请改用适用的接口
  4. ByteBuffer用法小结
  5. 灰度图像阈值化分割常见方法总结及VC实现
  6. JPA 系列教程12-复合主键-2个@Id+@IdClass
  7. vgrant使用简易教程
  8. 集合中存的是引用,分析一道容易混淆的Java面试题
  9. FJUT寒假第一周作业浮点数查寻题解
  10. ucloud中的udisk错误“Read-only file system”修复指南
  11. 评估指标【交叉验证&amp;ROC曲线】
  12. java面向对象三大特性:封装、继承、多态
  13. HDU5818 Joint Stacks
  14. python模块--collections
  15. CentOS安装CAS 5.3.4服务端
  16. 安卓工作室 android studio 的 汉化 美化 定制 Android studio&#39;s Chinesization beautification customization
  17. HTML+CSS:圆形和圆角图片格式
  18. epoll的水平触发和边缘触发,以及边缘触发为什么要使用非阻塞IO
  19. Lucene - CustomScoreQuery 自定义排序
  20. ubuntu14配置opencv3.4.1(转)

热门文章

  1. M0 M4之GPIO初始化
  2. Weui upLoader
  3. JS-元素大小深入学习-offset、client、scroll等学习研究笔记
  4. Codeforces Round #375 (Div. 2)E. One-Way Reform
  5. sencha touch 入门系列 (三)sencha touch 项目创建
  6. HDU 4455 Substrings[多重dp]
  7. 如何设置Eclipse工作区默认编辑宽度
  8. 豆瓣api开发
  9. 2-sat(tarjan算法)hdu(1824)
  10. phpcms输出logo下拉实例