一:迭代器 1、什么是迭代器 迭代器指的是迭代取值的工具,迭代是一个重复的过程,每次重复都是基于上一次的结果而继续的,单纯的重复并不是迭代,迭代器是用来迭代取值的工具,而涉及到把多个值循环取出来的类型。 简单来说就是你外婆生了你妈,你妈生了你,你们是有关联的,而不是一个个体,必须要有你奶奶才有你。
2、迭代器又分为‘可迭代对象’和‘迭代器对象’
可迭代对象:就是内置有__iter__功能的对象,像我们所学的字符串、列表、元组、字典、集合、文件对象都属于可迭代对象。
迭代器对象:就是内置有__iter__功能且有__next__的功能的对象,当可迭代对象使用了__iter__功能赋值给一个变量,就会变成迭代器对象,而__next__的功能就是用来迭代取值的工具。
示例:
#这里依次按字符串、列表、元组、字典、集合、文件对象进行举例
info1='yeqing'
res1=info1.__iter__()
info2=['yeqing','牛逼','666']
res2=info2.__iter__()
info3=('yeqing1','帅逼','888')
res3=info3.__iter__()
info4={'yeqing3','苦逼','999'}
res4=info4.__iter__()
info5={'yeqing4':'123','shaofeng':'456'}
res5=info5.__iter__()
res6=open(r'user.txt',mode='rt',encoding='utf-8')
def func(x):
while True:
try:
result=x.__next__()
print(result)
except StopIteration:
break
func(res1)
func(res2)
func(res3)
func(res4)
func(res5)
func(res6)
res6.close()
二、生成器:
生成器简单来说就是踏马的自定义迭代器
自定义迭代器就是定义函数时加入了yield,在函数内一旦存在yield关键字,调用函数并不会执行函数体代码,而会返回一个生成器对象,生成器即自定义的迭代器,示例:
def my_range(start,stop,step=1):
print('start...')
while start < stop:
yield start
start+=step
res=my_range(1,7,3)
print(res.__next__())
print(res.__next__())
print(res.__next__())
生成器好处就是这里后面还可以打印,生成器的好处就是可以控制你的取值次数,你想取多少就打印多少次。