可迭代对象(iterable)与迭代器对象(iterator)

242 阅读1分钟
  1. 可迭代对象(iterable)

    • 可迭代对象是指实现了 __iter__() 方法的对象。
    • 可迭代对象可以使用 for 循环来遍历,也可以通过 iter() 函数将其转换为迭代器对象。
    • 它可以返回一个新的迭代器对象,每次请求时从起始值开始递增。
    • 例子:列表、元组、字符串、集合、字典等。
  2. 迭代器对象(iterator)

    • 迭代器对象是指实现了 __iter__() 和 __next__() 方法的对象。
    • 迭代器对象可以逐个提供元素,每次调用 __next__() 方法都返回下一个元素。
    • 它可以使用 iter() 函数获取自身的引用,也可作为可迭代对象在 for 循环中使用。
    • 迭代器对象通常在内部使用了某种状态来记录当前位置,因此只能向前遍历,无法回到之前的元素。
    • 在耗尽所有元素后,迭代器对象会引发 StopIteration 异常,表示没有更多的元素可供获取。
    • 例子:range() 返回的对象、文件对象、生成器等。