迭代器
迭代:指的是一个重复的过程,每一次重复称为一次迭代,并且每一次重复的结果是下一次重复的初始值。
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.不能统计值的个数,即长度。
迭代器
原创
©著作权归作者所有:来自51CTO博客作者期待美好的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:saltstack管理集群
下一篇:生成器和面向编程
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java迭代器迭代map java迭代器详解
这篇文章主要介绍了Java Iterator接口遍历单列集合迭代器原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Java迭代器迭代map Java集合迭代器原理图解 迭代器 迭代 java