迭代:是一个重复的过程,每一次重复都是基于上一次的结果而来
可迭代对象如下:
s = 'hello' l = ['a','b','c','d'] t = ('a','b','c','d') dic = {'name':'egon','sex':'m','age':18} set1 = {1,2,3} f = open('db.txt')
# 迭代器对象本身也是可迭代对象 l = ['a','b','c','d'] iter_l = iter(l) while True: try: print(next(iter_l)) except StopIteration: break dic = {'name':'egon','sex':'m','age':18} iter_dic = iter(dic) while True: try: k = next(iter_dic) print(k,dic[k]) except StopIteration: break
什么是迭代器对象?
1.有__iter__,迭代器对象的iter方法得到的是迭代本身
2.有__next__
迭代器对象的优点
1.提供了一种同样的(不依赖于索引的)迭代方式
2.迭代器本身,比起其他数据类型更省内存
文件不仅是迭代器对象,也是可迭代对象
迭代器对象的缺点
1.一次性:只能往后走,不能回退,不如索引取值灵活
2.无法预知什么时候取值结束,即无法预知长度
补充:判断可迭代对象与迭代器对象
print(isinstance(s,Iterable))#判断s数据类型是否是可迭代对象 print(isinstance(s,Iterator))#只有文件是迭代器对象