Python生成器

生成器:保存了生成结果的的算法结构,可以推算出后面的元素。   

                 这些数字并没有生成,也没有存到内存中。
                 生成器对象,只是保存了生成这些数字的算法结构,可以推算出后面的元素。
                 这样,如果需要取特定的内存,而不是全部加载。
                效率提高。

创建方式:1、一个列表生成式的[ ] 改成( )

                    2、通过函数和yield


列表生成式:

b = (x*2 for x in range(0,11))   
<generator object <genexpr> at 0x00000000010DC990>  

将算法保存到函数中:

def fib(times):
  a = 0
  b = 1
  i = 0
  while i < times:
  yield b
  a,b = b,a+b
f = fib(10)
next(f) 

yield:使程序在yield处停止

next:获取生成器的下一个返回值

send:为算法传递参数,只能赋值给yield开始的代码。目的就是可以动态传递参数,来改变算法

             在使用send之前,要先使用next()或者使用send(None)

def getNums(begin,end):
	for i in range(begin,end):
		temp = yield None
		if temp:
			#模拟业务逻辑算法1
			if i%2==0:
				print('....%s'%i)
		else:
			#模拟业务逻辑算法2
			if i%2==1:
				print('....%s'%i)


ge = getNums(1,20)

next(ge)

ret = ge.send(True)





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值