千家信息网

Python中如何使用生成器

发表于:2025-02-20 作者:千家信息网编辑
千家信息网最后更新 2025年02月20日,本篇文章给大家分享的是有关Python中如何使用生成器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。自从PEP 255引入以来,生成器一
千家信息网最后更新 2025年02月20日Python中如何使用生成器

本篇文章给大家分享的是有关Python中如何使用生成器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

自从PEP 255引入以来,生成器一直是Python的重要组成部分。

生成器函数允许您声明一个行为类似于迭代器的函数。

它们允许程序员以快速、简单和干净的方式创建迭代器。

你可能会问,什么是迭代器?

迭代器是一个可以迭代(循环)的对象。它用于抽象数据容器,使其行为类似于可迭代对象。您可能已经每天使用一些可迭代对象:字符串、列表和字典等等。

迭代器由实现迭代器协议的类定义。该协议在类中查找两种方法:__iter__和__next__。

为什么你想要制作迭代器?

节省内存空间

迭代器在实例化时不会计算每个项的值。他们只在你要求时计算它。这被称为惰性评估。

当您有一个非常大的数据集要进行计算时,延迟评估很有用。它允许您在计算整个数据集时立即开始使用数据。

假设我们想要得到所有小于最大值的质数。

我们首先定义检查数字是否为素数的函数:

然后,我们定义将包含__iter__和__next__methods的迭代器类:

Primes以最大值实例化。如果下一个素数大于或等于max,则迭代器将引发StopIteration异常,结束迭代器。

当我们请求迭代器中的下一个元素时,它会将数字增加1并检查它是否为素数。如果不是,它将调用__next__again直到数字为素数。一旦它是,迭代器返回数字。

通过使用迭代器,我们不会在内存中创建素数列表。相反,我们每次请求时都会生成下一个素数。

我们来试试吧:

Primes对象的每次迭代都会调用__next__来生成下一个素数。

迭代器只能迭代一次。如果您尝试再次遍历素数,则不会返回任何值。它将表现得像一个空列表。

现在我们知道迭代器是什么以及如何制作迭代器,我们将继续研究生成器。

生成器

回想一下,生成器函数允许我们以更简单的方式创建迭代器。

生成器将yield语句引入Python。它有点像return,因为它返回一个值。

不同之处在于它保存了函数的状态。下次调用该函数时,执行将从它停止的位置继续执行,其变量值与生成前相同。

如果我们将Primes迭代器转换为生成器,它将如下所示:

现在这是相当pythonic!我们可以做得更好吗?

是!我们可以使用PEP 289引入的Generator Expressions。

这是生成器的列表理解等价物。它的工作方式与列表推导完全相同,但表达式用()而不是[]包围。

以下表达式可以替换上面的生成器函数:

这是Python中生成器的美妙之处。

综上所述...

生成器允许您以非常pythonic的方式创建迭代器。

迭代器允许延迟评估,仅在请求时生成可迭代对象的下一个元素。这对于非常大的数据集很有用。

迭代器和生成器只能迭代一次。

生成器函数优于迭代器。

以上就是Python中如何使用生成器,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

迭代 生成 生成器 函数 素数 对象 数据 数字 方式 这是 评估 最大 相同 元素 内存 实例 更多 最大值 有用 知识 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 大学生网络安全活动策划书 流放者柯南服务器寻宝 采取四化加强网络安全 如何申请软件开发企业 杭州的未来科技城里面互联网公司 服务器上有时候没网怎么回事 玄武区网络技术服务信息推荐 重庆同享电盟互联网科技 dell服务器硬盘安装 pc笔记本软件开发 学个网络安全有用吗 网络安全检查以查促管 服务器怎么装虚拟机 网络安全坑在哪 集成式数据库 税务局信息中心网络安全 长宁区信息网络技术管理系统 金华环球网络技术有限公司 浑源口碑好的网络安全常见问题 db2连接数据库的url 崂山区软件开发哪家专业 搭建中转服务器 端口转发 网络安全宣传教育培训情况 我的世界手机服务器怎么用 数据库怎么两列信息合成一个 vb与网络技术有区别吗 山西曙光服务器虚拟化安装云空间 河南直播软件开发公司 数据库原理中物理结构设计 python爬虫软件开发说明
0