美文网首页
Python 迭代器(Iterator)

Python 迭代器(Iterator)

作者: 吴吃辣 | 来源:发表于2019-08-21 11:24 被阅读0次

    版权所有,未经许可,禁止转载


    章节

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


    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)
    

    相关文章

      网友评论

          本文标题:Python 迭代器(Iterator)

          本文链接:https://www.haomeiwen.com/subject/yerbsctx.html