首页IT科技python中迭代器的基本方法(Python 迭代器Iterator详情)

python中迭代器的基本方法(Python 迭代器Iterator详情)

时间2025-06-20 15:35:49分类IT科技浏览3857
导读:1. 什么是迭代器? 迭代器是一个表示数据流的对象,当我们调用next( 方法时会返回容器中的下一个值 迭代器中包含__iter__和__next__( 方法。通过__iter__方法可以返回迭代器对象本身的方法。__next__( 方法会使cur指针始终指向当前位置,即返回容器中的下一个值,如果...

1. 什么是迭代器?

迭代器是一个表示数据流的对象             ,当我们调用next()方法时会返回容器中的下一个值 迭代器中包含__iter__和__next__()方法              。通过__iter__方法可以返回迭代器对象本身的方法                    。__next__()方法会使cur指针始终指向当前位置                     ,即返回容器中的下一个值       ,如果容器中没有更多元素了             ,则会抛出StopIteration异常       。 迭代器(iterator)也是可迭代的对象(iterable)

2. 迭代器类型

Python中支持容器进行迭代                    ,同时也提供迭代器协议支持用户自定义类进行迭代 容器迭代器:container.__iter__()方法实现容器对象迭代 迭代器协议:__iter__()方法和__next__()方法 __iter__():返回迭代器本身       ,容器可以与for...in结合使用 __next__():返回迭代器返回下一项

3. 迭代器分类

容器迭代器

Python中提供的内置容器有:list              、tuple                    、dictionary 和 set都是可迭代对象 调用iter()方法获取对应的迭代对象 调用next()方法获取迭代对象下一项值       。每一次调用next之后       ,会自动往后移到到一位                    ,获取后面一位的数据                    。

遍历迭代器

for i in it: print(i)

对于可迭代对象              ,我们也可以使用for...in来进行迭代

自定义迭代器

class Myiter: def __init__(self,times): self.times = times def __iter__(self): self.n = 0 return self def __next__(self): if self.n <= self.times: result = 3 ** self.n self.n += 1 return result else: raise StopIteration data = Myiter(4) it = iter(data) # 第1次 print(next(it)) # 第2次 print(next(it)) # 第3次 print(next(it)) # 第4次 print(next(it)) # 第5次 print(next(it)) # 第6次       ,超出范围触发StopIteration print(next(it)) ... 1 3 9 27 81 Traceback (most recent call last): File "E:\workspace\uiat\cookbooks\tester.py", line 67, in <module> print(next(it)) File "E:\workspace\uiat\cookbooks\tester.py", line 51, in __next__ raise StopIteration StopIteration ...
创建的对象/类需要实现__iter__()和__next__()两个方法即可作为迭代器 迭代器中__iter__()返回迭代器本身方法 迭代器中__next__()方法允许进行其他操作                    ,但是必须返回迭代器的下一项 为了防止迭代永远进行下去              ,Python提供stopIterator语句,终止迭代

总结

Python Iterator迭代器由__iter__()方法和__next__()方法组成             。迭代器分为Iterator和iteratable两种                    ,因此迭代器本身也是可迭代对象的       。

迭代器分为容器迭代和自定义迭代                     。

声明:本站所有文章                     ,如无特殊说明或标注,均为本站原创发布             。任何个人或组织             ,在未征得本站同意时                     ,禁止复制       、盗用       、采集                    、发布本站内容到任何网站             、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益       ,可联系我们进行处理                     。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
数据中心机房解决方案(简述数据中心主机的管理方式)