python 生成器
来源:互联网 发布:熊猫看书软件下载 编辑:程序博客网 时间:2024/06/05 13:35
(1)生成器:凡是调用yeild的函数,都称为生成器
print('begin')
while n>2:
yeild n*2 #yeild 后面是什么,就生成怎样的生成器
n=n-1
>>>x=count2(5) #生成一组序列
#调用的时候是一步一步调用,碰到yeild 就停止执行,等待下次
>>>x.__next__() #输出结果序列的第一个值
begin
10
>>>x.__next__() #输出结果序列的第二个值
8
>>>x.__next__() #输出结果序列的第三个值
6
>>>x.__next__() #出现错误,生成器输出结束
Traceback (most recent call last):
File "<pyshell#40>", line 1, in <module>
x.__next__()
StopIteration
>>>for i in count2(5): #可以使用循环的方式输出生成器的序列,这样就不会抛出异常
print(i)
>>>begin
10 8 6
(2)把创建列表的'[ ]'改为'( )'即可实现简单的创建
>>>g=(x for x in range(1,10)) #简单创建生成器
>>>g
>>> <generator object <genexpr> at 0x040E32D0>
>>>g.__next__()
>>>1 #也可以使用next()函数输出结果
(3)生成器有很大的用途:可以用作协程,可以使用send()函数传送信息,实现命令的执行
例如:
#可以写一个字符串查找的函数
>>> def print_matches(matchtext):
print('looking for ',matchtext)
while True:
line=(yield)
if matchtext in line:
print(line)
>>> m=print_matches("python")
>>> m.__next__()
>>>looking for python
>>> m.send('pytho n is cool ')
>>> m.send('python is fun')
python is fun
>>>m.close() #关闭生成器
生成器不会把结果保存在一个系列中,而是保存生成器的状态,
在每次进行迭代时返回一个值,直到遇到StopIteration异常结束。
在一个生成器中,如果没有return,则默认执行到函数完毕时返回StopIteration;
如果遇到return,如果在执行过程中 return,则直接抛出 StopIteration 终止迭代。
阅读全文
0 0
- Python 生成器
- Python生成器
- python生成器
- python 生成器
- python生成器
- python生成器
- python生成器
- python生成器
- python 生成器
- python生成器
- python 生成器
- python生成器
- python 生成器
- Python--生成器
- python 生成器
- Python 生成器
- python-生成器
- Python生成器
- 我的python学习笔记.遍历字典
- Jzoj3498 图形变换
- SpringBoot那些事
- Servlet的生命周期
- CC2640R2F之基础工程管理篇上--协议栈的分析
- python 生成器
- loadrunner Web_类函数之soap_request()
- unity_效果实现_移动按钮UI界面的交互实现(单位向量)
- 2016 ACM-ICPC 亚洲区(青岛赛区)现场赛
- 表达式求值-LintCode
- windows环境下安装Python和numpy,Matplotlib库
- 动态数组的实现-ArrayList
- word2vec安装使用笔记
- 第四周项目4—猴子选大王