Python 迭代器(Iterator) - 奇客谷qikegu.com

    xiaoxiao2025-05-30  93

    Python 介绍Python 开发环境搭建Python 语法Python 变量Python 数值类型Python 类型转换Python 字符串(String)Python 运算符Python 列表(list)Python 元组(Tuple)Python 集合(Set)Python 字典(Dictionary)Python If … ElsePython While 循环Python For 循环Python 函数Python LambdaPython 类与对象Python 继承Python 迭代器(Iterator)Python 模块Python 日期(Datetime)Python JSONPython 正则表达式(RegEx)Python PIP包管理器Python 异常处理(Try…Except)Python 打开文件(File Open)Python 读文件Python 写文件Python 删除文件与文件夹

    Python 迭代器(Iterator)


    Python 迭代器(Iterator)

    迭代器是一个包含有限数量值的对象。

    迭代器是一个可以被迭代的对象,可以遍历迭代器中的所有值。

    从技术上讲,在Python中,迭代器是实现迭代器协议的对象,该协议由方法__iter__()和__next__()组成。

    可迭代的数据类型

    列表、元组、字典和集合都是可迭代的对象,可以从其中获得迭代器。

    所有这些对象都可用iter()方法获取迭代器:

    示例

    从元组中获取一个迭代器,遍历并打印每个值:

    mytuple = ("自行车", "汽车", "高铁") myit = iter(mytuple) print(next(myit)) print(next(myit)) print(next(myit))

    复制

    字符串也是可迭代对象,可以从中获取迭代器:

    示例

    使用迭代器遍历字符串:

    mystr = "自行车" myit = iter(mystr) print(next(myit)) print(next(myit)) print(next(myit))

    复制

    for循环迭代

    我们也可以使用for循环来遍历一个迭代器:

    示例

    迭代元组的值:

    mytuple = ("自行车", "汽车", "高铁") for x in mytuple: print(x)

    复制

    示例

    迭代字符串的字符:

    mystr = "自行车" for x in mystr: print(x)

    复制

    for循环内部实际上进行了迭代器的获取,及next()方法的调用。

    创建迭代器

    一个对象要创建迭代器,变成可迭代的,必须实现方法:__iter__()和__next__()。

    __iter__()方法必须始终返回迭代器对象本身。

    __next__()方法必须返回序列中的下一项。

    示例

    创建一个返回数字的迭代器,从1开始,每个序列项递增1(返回1、2、3、4、5等):

    class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): x = self.a self.a += 1 return x myclass = MyNumbers() myiter = iter(myclass) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter))

    复制

    StopIteration

    上面示例next()调用将永远继续,我们可以使用StopIteration语句停止迭代。

    在__next__()方法中,我们可以根据迭代次数添加终止条件来引发错误:

    示例

    迭代20次后停止:

    class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): if self.a <= 20: x = self.a self.a += 1 return x else: raise StopIteration myclass = MyNumbers() myiter = iter(myclass) for x in myiter: print(x)

    复制


    Doc navigation

    ← Python 继承

    Python 模块 →

    最新回复(0)