暂无分类
暂无标签
发布于2019-10-27 10:05 阅读(769) 评论(0) 点赞(17) 收藏(4)
0
1
2
3
4
#-----列表生成器-----
1 a = [x*2 for x in range(10)] 2 print(a,type(a)) #[0, 2, 4, 6, 8, 10, 12, 14, 16, 18] <class 'list'> 3 4 def f(n): 5 return n**3 6 7 a = [f(x) for x in range(10)] 8 print(a,type(a)) #[0, 1, 8, 27, 64, 125, 216, 343, 512, 729] <class 'list'>
#-----简单赋值方式
1 t = (12,45) 2 a,b = t 3 print(a)#12 4 print(b)#45
#----生成器(生成器就是可迭代对象)-----
1 s = (x*2 for x in range(10)) 2 for i in s: 3 print(i,end=" ") # 0 2 4 6 8 10 12 14 16 18 4 5 #可迭代对象 :内部有iter 方法 6 a = (1,2,3,5) 7 a.__iter__() 8 b = [2,3,4,5] 9 b.__iter__() 10 c = {"a":"d","g":"r"} 11 c.__iter__() 12 e = set(a) 13 print(e,type(e)) 14 e.__iter__()
#-----yield关键字生成斐波那契数列
1 def fib(max): 2 n,before,after = 0,0,1 3 while n < max: 4 yield after 5 before,after = after,before+after 6 n += 1 7 8 g = fib(6) 9 for i in g: 10 print(i)
#-----yield 使用
1 def bar(): 2 print("ok1") 3 str1 = yield 1 4 print(str1) 5 6 print("ok2") 7 str2 = yield 2 8 print(str2) 9 b = bar() 10 next(b) 11 ret = b.send("ee") 12 print(ret)
#-----还可通过yield实现在单线程的情况下实现并发运算的效果
1 import time 2 3 def tourist(name): 4 print("%s 开始吃包子" % name) 5 while True: 6 baozi = yield #生成器函数(generator) 7 print("%s吃了第%s个" % (name, baozi)) 8 9 def cook(name): 10 c1 = tourist("A") 11 c2 = tourist("B") 12 c1.__next__() 13 c2.__next__() 14 print("%s开始做包子了" % name) 15 for i in range(1,10): 16 time.sleep(0.2) 17 c1.send(i) 18 c2.send(i) 19 cook("dream")
#-----迭代器-----
1、有iter方法
2、有next方法
1 a = ["dream","rise","happy"] 2 d = iter(a) #<list_iterator object at 0x000001E01BFADA90> 3 print(d) 4 print(a.__iter__())#<list_iterator object at 0x00000258F8392668>
0
1
2
3
4
5
6
7
8
9
作者:83748wuw
链接: https://www.pythonheidong.com/blog/article/146399/e148969b71d38ee0baf1/
来源: python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
Copyright © 2018-2019 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系z452as@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!