迭代器是用来迭代取值的工具。迭代指的是重复迭代,每一次迭代哦都是基于上次结果来的,单纯的重复不是迭代。
可迭代对象:凡是内部有__iter__()方法的都是可迭代对象,所有的序列类型:list,str,tuple,dict,set,文件f都是可迭代对象。
如何获取迭代器对象: 通过可迭代对象.__iter__()得到的返回值就是迭代器对象
例:
str1 = 'hello'
iter_str1 = str1.__iter__()
print(iter_str1) # 得到迭代器对象
print(iter_str1.__next__()) # 通过.__next__()进行迭代取值 ===》 h
print(iter_str1.__next__()) # 每执行一次从迭代器对象中取一个值 ===》e
如果迭代器对象中的值被取完,程序会报错,则需要进行捕获异常
例:
list1 = [1,2,3,4,5]
iter_list1 = list.__iter__()
while True:
try:
print(iter_list1.__next__())
except StopIteration
# 通过 try 和 except 捕获异常
迭代器对象的优缺点:
优点:1.不依赖于索引 迭代取值; 2.节省内存空间
缺点:1.每次取值都只能取当前第一个值,取指定值麻烦;2.除非取尽,否则无法获取迭代器长度
迭代器对象也是一个可迭代对象
可迭代对象不一定是迭代器对象
文件既是可迭代对象,也是迭代器对象