python中生成器及迭代器
2024-09-01 12:31:10
列表生成式
列表生成式是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)。
最新文章
- Windows下使用WSRM限制MongoDB内存
- 关于在linux中使用图形界面的网络管理工具
- JAVA实现打印机
- JavaScrip
- Eighth scrum meeting - 2015/11/2
- 【poj3358】消因子+BSGS 或 消因子+欧拉定理 两种方法
- FCKEditor使用说明
- 函数重载不仅仅是看其参数,还要看是否有const修饰
- UVa753/POJ1087_A Plug for UNIX(网络流最大流)(小白书图论专题)
- hdu_5293_Tree chain problem(DFS序+树形DP+LCA)
- 获取IP地址bash[转载]
- IntelliJ IDEA 中的Java程序目录结构
- ArcGIS for Server 的修改IP问题
- iOS 新浪微博-5.0 首页微博列表
- Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again 问题分析
- 牛客网Java刷题知识点float数据在内存中是怎么存储的
- ubuntu下安装flash player,浏览器观看视频,本人ubuntu版本14.04
- X-WAF简单测试体验
- 14 并发编程-(协程)-greenlet模块&;gevent模块
- css实现修改默认滚动条样式
热门文章
- ELK 学习笔记之 elasticsearch环境搭建
- Spring Boot 常用注解汇总
- LeetCode_225-Implement Stack using Queues
- mysql锁表处理语句
- sql server中Set与select的区别
- 简单自定义mybatis流程!!
- XSS中的同源策略和跨域问题
- The Mininum Function Value (luoguP2085 最小函数值)
- Yroot of High-Precisions (luogu P2293 [HNOI2004]高精度开根)
- DP题 总结 [更新中]