python里面的生成器

生成器定义

在python里面,一边循环一边计算的机制,成为生成器:generator,此时并不是直接生成全部列表,而是将全部生成方式保存起来,需要时再生成
列表生成式:
生成器创建方法一:

a =[x*2 for x in range(10)]
#输出是:[0,2,4,,6,8,10,12,14,16,18]
#当要依靠上述方法生成一个列表时
b =(x*2 for x in range(10))
#此时b就是生成器,这就是创建生成器的第一个方法
#如果生成器在最后一次循环后,还要求继续生成,就会报错

生成器创建方法二:

#创建斐波拉契数列
def fib(times):
	n =0
	a,b=0,1
	while n<times:
		print(b)
		a,b=b,a+b
		n+=1
	return "done"
#法二
def creatNum():	
	print('----start---')
	a,b=0,1
	for i in range(5):
		yield b
		a,b=b,a+b
#第一次执行时,不能写send函数。因为此时yield函数还没有实体,没法保存,或者在使用时可以这么写:
t =creatNum()
t.send(None)
#写完send函数时,需要一个值,但是不能在生成器没使用过时,就使用send函数,如果需要使用只能传回去None这个关键字

生成器的使用(多任务)

def test1():
	while True:
		print('----1----')
def test2():
	while True:
		print('----2----')
t1 =test1()
t2 =test2()
while True:
	t1.__next__()
	t2.__next__()
#此时由于执行速度很快,所以相当于两个test同时执行,相当于同时执行,成为协程,多任务的一种

多任务的方式有三种:协程,进程,线程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值