列表生成式

  列表生成式是python内部用来创建list的一种方法,其格式形如:

L = [x*8 for x in range(10)]
print(L)

  此时会得到结果:[0, 8, 16, 24, 32, 40, 48, 56, 64, 72]。我们可以看到,用列表生成式,一句代码可以代替用函数循环,比较简洁。

生成器

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

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

  同样上面的例子,我们只需将[ ]改为( ),此时便创建了一个生成器。

L = (x*8 for x in range(10))
print(L)

  此时输出的结果为:<generator object <genexpr> at 0x00000138C692A7D8>。如果需要将生成器(iterator)的值打印出来,则需要用next()函数.

  另外,除了上述创建生成器的方法外,我们还可以在定义函数时,利用关键字yield。当函数定义中包含yield时,那么这个函数就是一个生成器(iterator)。

最新文章

  1. Windows下使用WSRM限制MongoDB内存
  2. 关于在linux中使用图形界面的网络管理工具
  3. JAVA实现打印机
  4. JavaScrip
  5. Eighth scrum meeting - 2015/11/2
  6. 【poj3358】消因子+BSGS 或 消因子+欧拉定理 两种方法
  7. FCKEditor使用说明
  8. 函数重载不仅仅是看其参数,还要看是否有const修饰
  9. UVa753/POJ1087_A Plug for UNIX(网络流最大流)(小白书图论专题)
  10. hdu_5293_Tree chain problem(DFS序+树形DP+LCA)
  11. 获取IP地址bash[转载]
  12. IntelliJ IDEA 中的Java程序目录结构
  13. ArcGIS for Server 的修改IP问题
  14. iOS 新浪微博-5.0 首页微博列表
  15. Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again 问题分析
  16. 牛客网Java刷题知识点float数据在内存中是怎么存储的
  17. ubuntu下安装flash player,浏览器观看视频,本人ubuntu版本14.04
  18. X-WAF简单测试体验
  19. 14 并发编程-(协程)-greenlet模块&amp;gevent模块
  20. css实现修改默认滚动条样式

热门文章

  1. ELK 学习笔记之 elasticsearch环境搭建
  2. Spring Boot 常用注解汇总
  3. LeetCode_225-Implement Stack using Queues
  4. mysql锁表处理语句
  5. sql server中Set与select的区别
  6. 简单自定义mybatis流程!!
  7. XSS中的同源策略和跨域问题
  8. The Mininum Function Value (luoguP2085 最小函数值)
  9. Yroot of High-Precisions (luogu P2293 [HNOI2004]高精度开根)
  10. DP题 总结 [更新中]