014生成器(重点)
2018-06-18 00:05:51来源:未知 阅读 ()
##补充:列表生成器
1 #两个理解例子 2 a=[x**2 for x in range(10)] #取x,然后执行x**2,在存放到列表里面 3 print(a) #[0,1,4,9,16,25,36,49,64,81] 4 5 def f(n): 6 return n**2 7 a=[f(x) for x in range(10)] #取x,然后执行x**2,在存放到列表里面
##生成器
1 s=(x**2 for x in range(2,10)) #s就是一个生成器对象,生成器里面没有数据,只有调用才会有数据产生 2 print(s) #<generatorobject<genexpr>at0x0000025383953F10> 3 print(s.__next__()) #不用这个 4 print(next(s)) #用这个 5 for i in s: 6 7 print(i)
上面是第一种创建方式
第二种使用yield创建
1 def f(): 2 print('ook') 3 yield 1 4 print('koo') 5 yield 2 6 g=f() 7 print(g) # <generatorobjectfat0x000001F2049F3F10>没有显示ok,没有执行print。 8 print(next(g)) # 调用next才会执行print 9 10 print(next(g))
补充:可迭代对象,内部有iter方法
生成器使用
1 def fib(max): 2 n, before, after = 0, 0, 1 3 while n < max: 4 before, after = after, before+after 5 n += 1 6 yield after 7 generator = fib(25) 8 for i in generator: 9 print(i,end=' ')
1 def fib(max): 2 n, before, after = 0, 0, 1 3 while n < max: 4 before, after = after, before + after 5 n += 1 6 count = yield after 7 print(count) 8 generator = fib(25) 9 print(generator.send(None))#next(b),第一次send前如果没有next,只能传None 10 print(generator.send('aiq'))
##通过yield伪并发,非重点,看明白就行(没有找到例子)视频。博客主要是我整理知识所用,所以我理解了,就没有再去找例子了
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:013装饰器(重点)
下一篇:Pandas学习笔记
- Python学习日记(十) 生成器和迭代器 2019-08-13
- 链接 Mysql 创建 数据库和创表,增加数据 2019-08-13
- Python 重点知识整理(基于Python学习手册第四版) 2019-07-24
- python学习-39 生成器总结 2019-07-24
- python学习-38迭代器和生成器 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