Python3 迭代器与生成器

迭代器是一种可以遍历集合对象的数据结构。在 Python 中,迭代器提供了一种访问集合元素的方式,而无需暴露其底层表示。迭代器对象实现了 __iter__()__next__() 方法。

创建迭代器

要创建一个迭代器,需要实现 __iter__()__next__() 方法。__iter__() 方法返回迭代器对象本身,而 __next__() 方法会返回容器中的下一个值。如果容器中没有更多元素,则会引发 StopIteration 异常。

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

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

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

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

使用内置的迭代器

Python 内置了许多可迭代的对象,例如列表、元组、字典、集合等。这些可迭代对象都支持迭代协议,可以通过内置的 iter() 函数获取它们的迭代器。

列表迭代

列表是一个常见的可迭代对象。可以通过 for 循环遍历列表中的元素。

字典迭代

字典是一个键值对的集合。可以通过 for 循环遍历字典的键或值。

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

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

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

集合迭代

集合是一个无序且不重复的元素集合。可以通过 for 循环遍历集合中的元素。

生成器

生成器是一种特殊的迭代器,使用 yield 关键字来返回数据。生成器函数在每次调用 next() 时会从上次停止的地方继续执行,而不是从头开始。

基本生成器

生成器函数通过 yield 关键字返回值,每次调用生成器函数都会生成一个新的生成器对象。

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

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

带状态的生成器

生成器可以在函数体内保持状态,并在每次调用时继续执行。

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

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

生成器表达式

生成器表达式类似于列表推导式,但使用圆括号 () 而不是方括号 []。生成器表达式会按需生成元素,而不是一次性生成所有元素。

生成器方法

生成器对象还具有一些方法,如 send()throw()close(),可以用来控制生成器的执行。

send() 方法

send() 方法允许向生成器发送值,并将该值作为 yield 表达式的返回值。

throw() 方法

throw() 方法允许在生成器内部引发异常。

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

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

close() 方法

close() 方法允许停止生成器的执行。

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

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

迭代器和生成器的应用

迭代器和生成器在处理大数据集和无限序列时非常有用。它们允许程序逐个处理元素,而不必一次性加载整个数据集到内存中。

处理大数据集

在处理大量数据时,可以使用生成器来避免内存不足的问题。

无限序列

生成器还可以用于创建无限序列,只要在适当的时候停止生成即可。

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

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

通过上述内容,我们了解了迭代器和生成器的基本概念和应用。这些工具为处理复杂的数据集和实现高效的代码提供了强大的支持。

上一篇: Python3 推导式
下一篇: Python3 函数
纠错
反馈