• python——迭代器


    1.什么是迭代器协议

      (1)迭代器协议:对象必须提供一个next方法,执行该方法要返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走不能往前退)

      (2)可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个__iter__()方法)

      (3)协议:协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环、sum、min、max函数等)使用迭代器协议访问对象

    2.python中强大的for循环机制

      (1)for循环的本质:循环所有对象,全部使用迭代器协议

      (2)(字符串、列表、元组、字典、集合、文件对象)这些都不是可迭代对象,只不过在for循环中,调用了他们内部的 __iter__ 方法,把他们变成了可迭代对象

          然后for循环调用可迭代对象的 __next__ 方法去取值,而且for循环会捕捉StopIteration异常,以终止迭代

        用while循环模拟for循环

    l = [1,2,3,4,5]
    diedai_l=l.__iter__()
    
    while True:
        try:
            print(diedai_l.__next__())
        except StopIteration:
            print('迭代完毕了,循环终止')
            break
    运行结果:
    1
    2
    3
    4
    5
    迭代完毕了,循环终止

     3.next()内置函数    next()内置函数实际上就是在调用 l_iter.__next__()

    l = [1,2,3,4,5]
    l_iter = l.__iter__()
    print(next(l_iter))
    print(next(l_iter))
    print(l_iter.__next__())
    运行结果:

    1
    2
    3

  • 相关阅读:
    2019.6.15刷题统计
    入门组完成情况
    2019.6.14刷题统计
    2019.6.13刷题统计
    绑定与非绑定方法 继承 继承与抽象 查找属性关系 派生与覆盖 访问父类的内容
    23 xml 面向对象
    day22 configparser模块 subprocsee模块 表格
    Python常用模块
    20.logging日志 re正则
    导入模块 包
  • 原文地址:https://www.cnblogs.com/jgua/p/13513587.html
Copyright © 2020-2023  润新知