迭代器:循环反馈的容器(集合类型)
——不同于索引取值,但也可以循环的从容器对象中从前往后逐个返回内部的值
优点:不依赖索引,完成取值
缺点:不能计算长度,不能指定位取值(只能从前往后逐一取值)
可迭代对象:内置有__iter__()方法的对象,称之为可迭代对象
迭代器对象:内置有__next__()方法的对象,称之为迭代器对象。可以通过调用_next_()方法完成取值。
#迭代器即迭代的工具,那什么是迭代呢?#迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值while True: #只是单纯地重复,因而不是迭代 print('===>') l=[1,2,3]count=0while count < len(l): #迭代 print(l[count])
生成器
只要函数内部包含有yield关键字,那么函数名()的到的结果就是生成器,并且不会执行函数内部代码
def func(): print('====>first') yield 1 print('====>second') yield 2 print('====>third') yield 3 print('====>end')g=func()print(g) #
生成器就是迭代器
g.__iter__g.__next__#2、所以生成器就是迭代器,因此可以这么取值res=next(g)print(res)
生成器对象:就是一个迭代器对象
——可以通过_next_()方法取值,得到yield关键字的返回值