5.3 迭代器和生成器

迭代器和生成器优点是可以解决内存不够,或者资源太大无法完成一步操作的问题,有能够缩小占用内存好处。下面我们分开来讲一下迭代器和生成器的构造以及把函数构造成一个生成器。

迭代器

迭代器可以用于列表,元组,集合以及字典

mlist = [1,2,3,4,5,6]
it = iter(mlist)		#it迭代器,it索引为0
'''iter是一种类型,会自动记录索引次数'''
print(next(it))		#输出1
print(next(it))		#输出2
print(next(it))		#输出3
print(next(it))		#输出4

生成器

mylist = (x for x in range(100))		#mylist类型为生成器类型
print(next(mylist))			#输出为1
print(next(mylist))			#输出为2
print(next(mylist))			#输出为3
print(next(mylist))			#输出为4

将函数变为生成器

def go()
	print(1)
	yield 1			'''加上yield的函数返回值后,变成了一个生成器'''
	print(3)
	yidle 4
	print(2)
	yield 5
	print(500)
	yield 74
X = go()
print(next(x))		#第一次执行打印1,返回1
print(next(x))		#第二次执行打印3,返回4
print(next(x))		#第三次执行打印2,返回5
print(next(x))		#第四次执行打印500,返回74

**例如:**把函数构造成一个生成器

def createlist():
	for i in range(100):
		print(i)
		yield i
Y = createlist()		'''这时候Y就变成了生成器'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值