生成器generator
来源:互联网 发布:国家工商总局网络培训 编辑:程序博客网 时间:2024/06/05 14:35
受内存限制,列表容量有限,且创建较多元素的列表时,只访问前几个元素,后面元素占用的空间就浪费了
生成器:一边循环一边计算,不必创建完整的list,从而节省空间
创建生成器的两种方法:
1、把一个列表生成式[]换成()
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]>>> g = (x * x for x in range(10))>>> g<generator object <genexpr> at 0x1022ef630>
2、定义一个函数中包含有yield字段,那该函数就不是一个普通的函数,而是一个生成器generator
def fib(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1 return 'done'
注:a,b=b,a+b =右边的先同时计算,再分别赋值给左边、生成器的调用:一般使用for循环迭代,说明生成器也是一个可迭代的对象。
for循环一般需要给一个判断结束循环
>>> for n in fib(6):... print(n)...112358
使用for循环调用generator时,无法拿到最后的return返回值,需要捕捉StopIteration
错误,返回值包含在StopIteration
的value
中:>>> g = fib(6)>>> while True:... try:... x = next(g)... print('g:', x)... except StopIteration as e:... print('Generator return value:', e.value)... break...g: 1g: 1g: 2g: 3g: 5g: 8Generator return value: done
阅读全文
0 0
- 生成器 generator
- 生成器generator
- 生成器generator
- 生成器generator
- Hibernate主键生成器generator
- [Python]生成器(generator)
- Load Generator负载生成器
- Python 生成器 generator
- python生成器Generator
- cmake 生成器(generator)
- Load Generator负载生成器
- Java笔记---生成器Generator
- Python-----生成器:generator
- Python 生成器 generator
- Mybatis Generator(代码生成器)
- Python 生成器(generator)
- mybatis-generator 生成器
- 生成器(Generator)
- js 计时器,倒计时完整实例代码附效果图 制作一个当前时间的动态时钟
- 学习 UNIX网络编程卷1:套接字 笔记1-实现一个简单的回射客户服务器程序
- Java 根据指定日期计算所在周的周一和周日
- scala-high_order_function
- CentOS 6.7使用阿里云CentOS的yum源
- 生成器generator
- Determining IP information for eth1... failed; no link present. Check cable?解决
- ES6-正则的扩展-RegExp构造函数
- GitHub Desktop 百度云分享
- [Spark--版本更新]-----2.1.2发行说明
- 使用nhmicro的micro-datasource嵌入式解决微服务架构分布式事务问题
- 递归、递推与通项
- C#多线程编程里的暂停和继续
- Base64位编码的整体思路