生成器及推导式
2019-04-25 06:56:35来源:博客园 阅读 ()
一、生成器——自己写的函数
1、只要有yield关键字的函数都是生成器函数
2、yield关键字不能与return关键字同时使用
3、return结束函数,yield不结束函数,生成器函数执行之后得到一个生成器作为返回值
return与yield的区别
def ger(): print('hello') yield 'Hi' ret=ger() print(ret) #<generator object ger at 0x00000137A9D985E8>#结果
def ger(): print('hello') return 'Hi' ret=ger() print(ret) #hello#结果 #Hi
yield的使用
def ger(): print('hello') yield 'Hi' ret=ger() print(ret.__next__()) #hello结果 #Hi
'''
def ger():
print('hello')
yield 'Hi'
yield '春暖花开'
ret=ger()
print(ret.__next__())
print(ret.__next__())
#hello
#Hi
#春暖花开
'''
'''
def ger():
print('hello')
yield 'Hi'
yield '春暖花开'
yield '面朝大海'
ret=ger()
for fr in ret:
print(fr)
#hello结果
#Hi
#春暖花开
#面朝大海
'''
二、推导式
分类:列表推导式(相对用的多)、生成器推导式,字典推导式;
列表推导式ret=[满足条件的元素的相关操作 for 元素 in 可迭代数据类型 if 元素相关条件]
例如30以内能被3整除的数的列表推导式:ret=[i for i in range(30) if i%3==0]
生成器推导式g=(满足条件的元素的相关操作 for 元素 in 可迭代数据类型 if 元素相关条件)
例如30以内能被3整除的数的生成器推导式:g=(i for i in range(30) if i%3==0)
例子:
def add(a,b): return a+b def rang(): for i in range(4): yield i g=rang() for n in [1,10,5]:#遇到这样的可拆分为如下''' '''中的代码 g=(add(n,i) for i in g) ''' #上面for里的代码等价如下: n=1 g=(add(n,i) for i in g)#(add(n,i) for i in rang()) n=10 g=(add(n,i) for i in g)#(add(n,i) for i in (add(n,i) for i in rang())) n=5 g=(add(n,i) for i in g)#g=(add(n,i) for i in (add(n,i) for i in (add(n,i) for i in rang())))#实际执行 ''' print(list(g))#
结果
原文链接:https://www.cnblogs.com/jcb9426986/p/10758981.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:NumPy 学习笔记(一)
下一篇:简单的计算功能,还需要优化
- Python学习日记(十) 生成器和迭代器 2019-08-13
- python学习-39 生成器总结 2019-07-24
- python学习-38迭代器和生成器 2019-07-24
- Python-11-生成器 2019-07-24
- 双线性插值-推导和应用 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash