Python----迭代器的使用方法
  TEZNKK3IfmPf 2023年11月14日 20 0

【原文链接】

Iterable,可迭代:

一个类实现了__iter__()函数,则这个类是可迭代的,通常__iter__()函数必须返回一个
实现了__next__()的类的对象,当然如果自己实现了__next__(),也可以返回自己

Iterator 迭代器:

同时实现了__iter__()和__next__()的对象,就是迭代器

class Student():
    def __init__(self,name):
        self.name=name
        self.start=0

    def __iter__(self):
        return self

    def __next__(self):
        if self.start <len(self.name):
            result=self.name[self.start]
            self.start+=1
            return result
        else:
            raise StopIteration

s=Student("Jack Macial")
for elem in s:
    print(elem)

执行结果如下:

J
a
c
k
 
M
a
c
i
a
l

下面查看next函数的使用

class Student():
    def __init__(self,name):
        self.name=name
        self.start=0

    def __iter__(self):
        return self

    def __next__(self):
        if self.start <len(self.name):
            result=self.name[self.start]
            self.start+=1
            return result
        else:
            raise StopIteration

s=Student("Jack Macial")
print(next(s))
print(next(s))
print(next(s))
print(next(s))
print(next(s))
print(next(s))
print(next(s))
print(next(s))
print(next(s))
print(next(s))
print(next(s))
print(next(s))

执行结果如下:

J
a
c
k
 
M
a
c
i
a
l
Traceback (most recent call last):
  File "G:/python_flask/test.py", line 29, in <module>
    print(next(s))
  File "G:/python_flask/test.py", line 15, in __next__
    raise StopIteration
StopIteration
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   39   0   0 python开发语言
  TEZNKK3IfmPf   2024年05月31日   28   0   0 python
  TEZNKK3IfmPf   2024年05月31日   31   0   0 python
TEZNKK3IfmPf