码迷,mamicode.com
首页 > 其他好文 > 详细

迭代器

时间:2018-08-22 21:58:20      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:缺点   迭代器   字典   lte   元组   字符   原理   except   必须   

迭代器 迭代:指的是一个重复的过程,每一次重复称为一次迭代,并且每一次重复的结果是下一次重复的初始值。 l=[‘a‘,‘b‘,‘c‘,‘d‘] count=0 while count < len(l): print(l[count]) count+=1 对于序列类型:str ,list,tuple 可以依赖索引来迭代取值,但是对于dict,set,文件,python必须为我们提供一种不依赖于索引的迭代取值的方式。 可迭代对象:obj.__iter__ 字符串,列表,元组,字典,文件,集合 迭代器对象:obj.__iter__ 和 obj.__next__ 等于iter(),next() 文件 注: 可迭代对象不一定是迭代器对象 迭代器对象一定是迭代对象 调用obj.__iter__()方法,得到的是一个迭代器对象,对于迭代器对象,执行.__iter__得到的任然是它本身。 l=[‘a‘,‘b‘,‘c‘,‘d‘] l_iter=l.__iter__() #将l_iter转为一个迭代器对象 d={‘name‘:‘abc‘,‘age‘:18,‘sex‘:‘anle‘} d_iter=d.__iter__() 将d_iter转为一个迭代器对象 print(d_iter.__next__()) #取出第一个key,没有值返回Steplteration f=open(‘a.txt‘,‘r‘,encoding=‘utf-8‘) print(f.__next__()) #取出文件的第一行 d={‘name‘:‘abc‘,‘age‘:18,‘sex‘:‘anle‘} d_iter=iter(d) while Ture: try: #检测下面的一行代码 print(next(d_iter)) except Steplteration: #如果返回值为Steplteration侧执行下面的代码 break for循环原理: 1.调用in后的obj.__iter 2.k=obj_iter.__next__() 3.捕捉返回值Steplteration异常,结束迭代 d={‘name‘:‘abc‘,‘age‘:18,‘sex‘:‘anle‘} for k in d: print(k) 迭代器的优点: 1.提供了一种统一的,不依赖于索引的取值方式,为for循环的实现提供了依据。 2.迭代器同一时间在内存只有一个值,更节省内存空间。 迭代器的缺点: 1.只能一次性取值,并只能往后取。 2.不能统计值的个数,即长度。

迭代器

标签:缺点   迭代器   字典   lte   元组   字符   原理   except   必须   

原文地址:http://blog.51cto.com/13399294/2163048

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!