• 函数进阶-迭代器


    迭代器

    可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator

    我们已知道,可以直接作用于 for 循环的数据类型有以下几种:

    一类是集合数据类型,如:list、tuple、dict、set、str等

    一类是generator ,包括生成器和 yield 的generator function。

    这些可以直接作用于for 循环的对象统称为可迭代对象:Iterable

    可以使用isinstance() 判断一个对象是否是 Iterable 对象:

     小结

    凡是可作用于 fo r 循环的对象都是 Iterable 类型;

    凡是可作用于 next() 函数的对象都是 Iterator 类型,它们表示一个惰性计算的序列;

    集合数据类型如 list、dict、str等是 Iterable 但不是 Iterator ,不过可以通过 iter() 函数获得一个 Iterator 对象。

    Python3的 for 循环本质上就是通过不断调用 next() 函数实现的,例如:

    fo x in [1,2,3,4,5]:

      pass

    实际上完全等价于:

    #首先获得Iterator 对象:

    it = iter([1,2,3,4,5])

    #循环:

    whil True:

      try:

        获得下一个值:

        x= next(it)

      except StopIteration

        #遇到StopIteration 就退出循环

          break

  • 相关阅读:
    HDU 4578
    Luogu 3373
    HDU 6343
    2018牛客网暑期ACM多校训练营(第五场) F
    2018牛客网暑期ACM多校训练营(第五场) E
    2018牛客网暑期ACM多校训练营(第四场) A
    POJ 3580
    HDU 1890
    ZOJ 4029
    2018牛客网暑期ACM多校训练营(第三场) H
  • 原文地址:https://www.cnblogs.com/anzhangjun/p/8419654.html
Copyright © 2020-2023  润新知