python(8)迭代器、生成器

本文介绍了Python中的三元表达式用法,详细阐述了条件判断与结果返回。接着讲解了迭代器协议的概念,强调了可迭代对象必须实现next方法。此外,还探讨了生成器的功能,包括生成器函数和生成器表达式的应用,并展示了如何通过yield关键字创建和使用生成器。最后,总结了生成器的特性,如延迟计算和内存效率。
摘要由CSDN通过智能技术生成

三元表达式:
res = 结果1 if 条件语句 else 结果3	#条件成立返回结果1,否则返回结果2

li = ["元素%s" %i for i in range(10)]	#['元素0', '元素1', '元素2', '元素3', '元素4']
li = ["元素%s" %i for i in range(5) if i > 3]		#['元素4']



迭代器协议是指:对象必须提供一个next执行方法,执行该方法要么返回迭代器中的下一项,要么就引起一个stopIteration异常,以终止迭代。
可迭代对象:实现可迭代协议的对象(如何实现:对象内部定义一个__iter__())  

	l = [1,2,3,4]
	iter_l = l.__iter__()
	print(iter_l.__next__())	#1
	print(next(iter_l))		#2

生成器:
	1、生成器函数:使用yield而不是return语句返回结果。yield语句一次返回一个结果,在每个结果之间,挂起函数的状态,以便下次从它离开的地方继续执行
	def test():
      yield 1
      yield 2
      yield 3
      yield 4 ,5 ,6
	res = test()
	print(res.__next__())	#1
	print(next(res))	#2
	print(next(res))	#3
	print(next(res))	#(4, 5, 6)


	2、生成器表达式:类似于列表推导,但是生成器返回按需求产生结果的一个对象,而不是立即产生结果。这也是生成器的优点
	generator = ("元素%s" %i for i in range(10)]	#['元素0', '元素1', '元素2', '元素3', '元素4')		#注意是元组的形式,才是生成器
	print(generator)	#<generator object <genexpr> at 0x0000014CFDDC25E8>
	print(generator.__next__())	#元素0
	print(next(generator))	#元素1
	
	[i for i in range(10)]	#列表解析
	(i for i in range(10))	#生成器表达式
	

生成器小结:
	1、是可迭代对象
	2、实现了延迟计算,省内存
	3、生成器本质和其他数据类型一样,都是实现了迭代器协议。
	4、生成器只能遍历一次

yield的特性:
	1、相当于return控制的是函数的返回值
	2、x = yield res 接收send(value)传过来的值赋给x,res依然是返回值

send相当于一次next############day18,19##########
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值