首页 > 后端开发 > Python教程 > Python 中的迭代器与生成器:何时使用哪个?

Python 中的迭代器与生成器:何时使用哪个?

Linda Hamilton
发布: 2024-11-25 19:16:11
原创
718 人浏览过

Iterators vs. Generators in Python: When to Use Which?

Python 中的生成器与迭代器

Python 的迭代器和生成器都是可迭代的,但它们的实现和使用有所不同

迭代器

迭代器是可迭代对象,提供用于遍历项目序列的接口。它们有两个主要方法:

  • __iter__:返回迭代器本身,允许其迭代多次。
  • __next__:返回序列中的下一项。当没有更多项目时引发 StopIteration。

生成器

生成器是一种特殊类型的迭代器,它使用yield 关键字动态生成值。调用时,生成器函数返回一个可以迭代的生成器对象。

在内部,生成器存储一个挂起的执行状态,用于跟踪迭代中的当前位置。当迭代生成器时, __next__ 方法恢复挂起的函数并生成下一个值。然后再次暂停执行,直到下一次迭代。

用例

  • 使用迭代器:

    • 当您需要跨迭代维护状态时(例如,带有复杂行为)。
    • 当您需要公开除迭代之外的其他方法时(例如,具有 current() 和 next() 方法的类)。
  • 使用生成器:

    • 当简单性和效率都重要时优先级。
    • 当您想要延迟生成值而不存储中间列表时。
    • 当您想要暂停和恢复迭代时(例如,暂停计算以供稍后使用)使用)。

示例

考虑以下为给定范围生成平方数的函数:

1

2

3

def squares(start, stop):

    for i in range(start, stop):

        yield i * i

登录后复制

该函数创建一个生成器,一次生成一个平方数。它比列表理解或自定义迭代器更有效,因为它避免创建所有平方值的中间列表。

以上是Python 中的迭代器与生成器:何时使用哪个?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板