zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    zabbix源码安装
    利用Linux系统生成随机密码的8种方法
    Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
    Jenkins的参数化构建
    Jenkins中maven的作用--构建项目(三)
    Beans(dp,两次dp)
    Piggy-Bank(完全背包)
    Super Jumping! Jumping! Jumping!(dp)
    01串(dp)
    钱币兑换问题(完全背包)
  • 原文地址:https://www.cnblogs.com/jgua/p/13513587.html
Copyright © 2011-2022 走看看