1.迭代器
能被next调用,并不断返回下一个值的对象,叫做迭代器(迭代对象)
概念:迭代器指可以迭代取值的工具,迭代是一个重复的过程,每一次迭代是根据上一次迭代的值继续
特征:不依赖索引,使用next指针迭代所有数据,一次迭代一个值,可以节省空间,迭代无限的数据
(1)可迭代对象
判断可迭代对象的方法:
1)使用dir可以查看对象的所有成员,成员中包含’‘iter’'可判断为可迭代对象
2)调用Iterable判断可迭代对象
##方法一 通过dir函数获取成员判定
lst=[1,2,3,4,5]
for i in lst:
print(i)
res=dir(lst)
print('__iter__' in res)
##方法二 通过引入Iterable判定
from collections import Iterable
res=isinstance(lst,Iterable)
print(res)
(2)迭代器的定义
1)iter(iterable)
2)iterable.iter()
res=iter(lst)
print(next(res))
res=lst.__iter__()
print(next(res))
(3)迭代器的判定
1)成员中包含’‘iter’‘和’’"next"可判断为迭代器
2)引用Iterator进行判定
##方式一:通过成员判定
res=iter(lst)
res1='__iter__' in dir(res) and '__next__' in dir(res)
print(res1)
##方式二:通过引入Iterator
from collections import Iterator
res1=isinstance(res,Iterator)
print(res1)
(4)迭代器的调用
1)通过next(迭代器)调用
2)迭代器.next()调用
迭代器通过next方法调用数据是单项不可逆的过程
res=iter(lst)
res1=next(res)
(5)迭代器的重置
res=iter(lst)
(5)迭代调用的其他方法
#1.通过next(迭代器)调用数据
res1=next(res)
print(res1)
res1=next(res)
print(res1)
res1=next(res)
print(res1)
res1=next(res)
print(res1)
res1=next(res)
print(res1)
#res1=next(res) 报错,获取个数超过迭代器元素个数
#print(res1)
##2.通过for遍历迭代器
res=iter(lst)
for i in res:
print(i)
##3.通过for + next调用迭代器元素
res=iter(range(100000))
for i in range(10):
print(next(res))