python生成器
来源:互联网 发布:手机视频捕捉软件 编辑:程序博客网 时间:2024/05/22 09:47
运用列表生成式可以快速生成list:
>>>[x * x for x in range(1, 11) if x % 2 == 0] [4, 16, 36, 64, 100]
在Python中, 这种一边循环一边计算的机制, 称为生成器(Generator),
创建 L 和 g 的区别仅在于最外层的 [] 和 () , L 是一个list, 而 g 是一个generator :
>>> L = [x * x for x in range(10)] >>>> L [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] >>> g = (x * x for x in range(10)) >>> g <generator object <genexpr> at 0x104feab40>
我们可以直接打印出list的每一个元素,打印出generator的每一个元素可以通过generator的 next() 方法,这种不断调用 next() 方法实在是太变态了, 正确的方法是使用for循环,因为generator也是可迭代对象。
定义generator的另一种方法,如果一个函数定义中包含 yield 关键字,那么这个函数就不再是一个普通函数,而是一个generator:
def fib(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1
generator和函数执行流程不一样。函数是顺序执行,遇到return语句或者最后一条语句就返回,而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处执行。
阅读全文
0 0
- Python 生成器
- Python生成器
- python生成器
- python 生成器
- python生成器
- python生成器
- python生成器
- python生成器
- python 生成器
- python生成器
- python 生成器
- python生成器
- python 生成器
- Python--生成器
- python 生成器
- Python 生成器
- python-生成器
- Python生成器
- springmvc的配置
- CAS与Unsafe
- HDU 2553 N皇后问题(dfs)
- Jdbc模版式写法与Spring-JdbcTemplate的比较
- 用python简单处理图片(2):图像通道\几何变换\裁剪
- python生成器
- 使用Go语言实现简单的Get请求
- 浅谈HDFS和MapReduce-YARN的运行原理
- 通达OA2017版流程中心触发器应用实例
- MySQL主从环境配置(笔记系列)
- 机器学习(统计学习方法)
- Oracle常用函数整理
- 数据库视频总结
- Mybatis入门篇(二)-模糊查询