迭代器:
是一个重复的过程,每一次重复都是基于上一次的结果而来。
可迭代对象:
凡是对象有_iter_方法(对象._iter_),该对象就是可迭代对象。
字符串,列表,元组,字典等都是可迭代对象。
可迭代对象._iter_()=i
import trydic={'name':'yangshuai','sex':'m',"age":18}i=dic.__iter__()print(i)#可迭代对象+__iter__得到的就是迭代器对象。#next(i) #这个相当于迭代器对象执行一次的值,打印执行一次的值可以利用print来执行。#执行到最后,会抛出一个StopIteration异常,这样相当于程序报错,为了处理这种问题,我们可以利用try....exceptiter_l=iter(i)while True: try: print(next(iter_l)) except StopIteration: break
迭代器的优点:
1,提供了一种统一的(不依赖索引)的迭代方式
2,迭代器本身,比起其他数据类型更省内存,一次只在内存中加载一个值。
迭代器的缺点:
1,一次性的往后走,不能回退
2,不如索引灵活
3,无法预知什么时候取值结束,既无法预知长度。
补充:
判断是不是可迭代对象:
dic={'name':'yangshuai','sex':'m',"age":18}i=dic.__iter__()from collections import Iterable,Iterator#判断是不是可迭代对象print(isinstance(i,Iterable))#判断是不是迭代器print(isinstance(i,Iterator))