Python 中如何实现一个自定义的迭代器?

推荐答案

-- -------------------- ---- -------
----- -----------
    --- -------------- ------
        --------- - ----
        ---------- - -

    --- ---------------
        ------ ----

    --- ---------------
        -- ---------- -- ---------------
            ----- -------------
        ----- - ---------------------
        ---------- -- -
        ------ -----

- ----
------- - --- -- -- -- --
----------- - -------------------

--- ---- -- ------------
    -----------

本题详细解读

1. 什么是迭代器?

迭代器是 Python 中用于遍历集合(如列表、元组、字典等)的对象。它实现了两个特殊方法:__iter__()__next__()

2. __iter__() 方法

__iter__() 方法返回迭代器对象本身。这个方法使得对象可以被迭代,通常在 for 循环中使用。

3. __next__() 方法

__next__() 方法返回集合中的下一个元素。如果没有更多的元素可供迭代,它会引发 StopIteration 异常,表示迭代结束。

4. 自定义迭代器的实现步骤

  • 初始化:在 __init__() 方法中,初始化迭代器所需的数据和索引。
  • 实现 __iter__():返回迭代器对象本身。
  • 实现 __next__():返回下一个元素,并在没有更多元素时引发 StopIteration 异常。

5. 示例代码解析

  • MyIterator 类接受一个列表 data 作为输入,并在 __init__() 方法中初始化索引 index
  • __iter__() 方法返回 self,表示对象本身是可迭代的。
  • __next__() 方法检查索引是否超出数据范围,如果超出则引发 StopIteration 异常,否则返回当前元素并递增索引。

6. 使用自定义迭代器

通过 for 循环遍历自定义迭代器时,Python 会自动调用 __iter__()__next__() 方法,直到 StopIteration 异常被引发为止。

纠错
反馈