函数进阶-迭代器

迭代器

可以被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

原文地址:https://www.cnblogs.com/anzhangjun/p/8419654.html