迭代器是用来迭代取值的工具。迭代指的是重复迭代,每一次迭代哦都是基于上次结果来的,单纯的重复不是迭代。

可迭代对象:凡是内部有__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.除非取尽,否则无法获取迭代器长度

 

迭代器对象也是一个可迭代对象

可迭代对象不一定是迭代器对象

文件既是可迭代对象,也是迭代器对象