0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何学会 Python yield 关键词

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-10-31 11:06 次阅读

要理解yield的作用,你必须理解生成器是什么。在理解生成器之前,必须先理解迭代器。

1.迭代器

当您创建一个列表时,你可以逐个读取它的项。逐项读取其项称为迭代:

图片

mylist是一个可迭代的对象。当你使用列表解析式时,你创建了一个列表,因此也是一个迭代器:

图片

所有你可以用"for... in ...."都是迭代器,包括列表、字符串、文件…等等。

这些迭代器非常方便,因为你可以随心所欲地读取它们,但是你将所有的值都存储在内存中,当你有很多值时,这就非常浪费内存了。

为了解决这样的问题,Python有了生成器的概念。

2.生成器

生成器是迭代器,这种迭代器只能迭代一次。生成器不会将所有值都存储在内存中,它们会动态生成这些值:

图片

它和列表解析式是类似的,只是用()代替了[]。但是,你不能在mygenerator中对i执行第二次,因为生成器只能使用一次:它print(0),然后忘记它,print(1),最后是4。

3.Yield

yield是一个与return类似的关键字,只是函数将返回一个 生成器

认真看完下面这个例子,你应该能完全明白。

图片

函数将返回一组只需要读取一次的值。如果你能将这个特性理解清楚,并将其应用到你的代码中,可能可以极大地提高性能,下次我们将介绍在什么时候该用它。

请注意示例中的第6行,在调用函数时,在函数体中编写的代码不会运行。函数只返回生成器对象,可别忘了这个重点。

最后,你的代码将从每次使用生成器时停止的地方继续。因此示例中第二次使用生成器的时候,我们的生成器已经完全没有值了。

所以最核心的逻辑如下:

  1. for函数第一次调用从函数创建的生成器对象时,它将从头运行函数中的代码,直到达到yield,返回循环的第一个值。
  2. 随后的调用都将再次运行你在函数中编写的循环,并yield返回下一个值,直到没有要返回的值为止,就如我们上面的例子所示。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 关键词
    +关注

    关注

    0

    文章

    16

    浏览量

    9810
  • 字符串
    +关注

    关注

    1

    文章

    578

    浏览量

    20508
  • 生成器
    +关注

    关注

    7

    文章

    315

    浏览量

    21003
  • python
    +关注

    关注

    56

    文章

    4793

    浏览量

    84631
收藏 人收藏

    评论

    相关推荐

    [讨论]提高网站关键词排名的28个SEO小技巧

    提高网站关键词排名的28个SEO小技巧关键词位置、密度、处理 URL中出现关键词(英文) 网页标题中出现关键词(1-3个) 关键词标签中出现
    发表于 12-01 17:08

    TF-IDF测量文章的关键词相关性研究

    停用词的移除、大小写字母转化和词干提取。4)获取查询。获取单词权重,对于可疑文档利用TF-IDF获得关键词,并排序得到相应的关键词列表。排在前n个的关键词组成一个查询,以此类推,本试验中n=5。5)检索
    发表于 01-26 10:38

    亚马逊代运营 amazon Search term 关键词填写的“神技”

    、转化率,且与自己产品相关的关键词,单独拿出来放进 search term 里面进行优化 listing 的操作。2.自己利用一些工具去筛选出一些买家搜索,然后根据自己对产品的理解,买家的搜索习惯,适当
    发表于 06-05 15:41

    HanLP关键词提取算法分析详解

    l 参考论文:《TextRank: Bringing Order into Texts》l TextRank算法提取关键词的Java实现l TextRank算法自动摘要的Java实现这篇文章中作者
    发表于 11-05 10:41

    基于Cortex-M处理器的高精度关键词识别实现

    我们可以对神经网络架构进行优化,使之适配微控制器的内存和计算限制范围,并且不会影响精度。我们将在本文中解释和探讨深度可分离卷积神经网络在 Cortex-M 处理器上实现关键词识别的潜力。关键词识别
    发表于 07-23 06:59

    关键词优化有哪些实用的方法

    我们在做关键词优化排名的时候,有经验的seo人员都会有自己的一套关于关键词应该怎么去优化排名的方法,但是对于一些刚接触seo的新手来说就会比较迷茫,不知道应该怎么去做好关键词的排名,大部分新手都主要
    发表于 08-11 01:19

    百度关键词排名掉完了怎么办

    一夜之间关键词排名掉完了,没有被K,也没有出现违规操作,这是怎么回事呢?
    发表于 01-27 11:01

    yield 开始入门python协程

    简单介绍 yield本篇文章会先向你介绍一个陌生的 Python 关键词,他和 return 就像一对新兄弟,有相似之处,又各有不同。相似的是:yield 和 return 都可以在一
    发表于 03-16 16:21

    #2023,你的 FPGA 年度关键词是什么? #

    FPGA 年度关键词,我的想法是“标准化”;今年的工作中遇到了不少同事的issues,本身都是小问题或者很细节的东西但是却反复出现问题,目前想到的最好的办法是做好设计规则的标准化才能避免,不知道大家有没有更好的建议?
    发表于 12-06 20:31

    基于强度熵解决中文关键词识别

    文本的关键词识别是文本挖掘中的基本问题之一。在研究现有基于复杂网络的关键词识别方法的基础上,从整个复杂网络拓扑结构特征的信息缺失角度来考察各节点的重要程度。提出强度熵测度来量化评估各节点重要程度,用于解决中文关键词识别问题。实验
    发表于 11-24 09:54 7次下载
    基于强度熵解决中文<b class='flag-5'>关键词</b>识别

    基于关键词的最优路径查询算法

    为改进基于关键词的最优路径查询算法,在大规模图以及多查询关键词下复杂度过高与可扩展性不足的缺陷,依据查询关键词序列构建候选路径的策略提出一种高效查询算法。该算法在路径构建过程中优先满足查询关键
    发表于 12-06 11:28 0次下载

    基于词频统计的关键词提取方法

    在TF-IDF算法基础上,提出新的基于词频统计的关键词提取方法。利用段落标注技术,对处于不同位置的词语给予不同的位置权重,对分词结果中词频较高的同词性词语进行词语相似度计算,合并相似度较高的词语
    发表于 12-15 15:29 13次下载
    基于词频统计的<b class='flag-5'>关键词</b>提取方法

    基于自动关键词抽取方法

    自动关键词抽取是从文本或文本集合中自动抽取主题性或重要性的或短语,是文本检索、文本摘要等许多文本挖掘任务的基础性和必要性的工作.探讨了关键词和自动关键词抽取的内涵,从语言学、认知科学
    发表于 12-26 16:47 2次下载
    基于自动<b class='flag-5'>关键词</b>抽取方法

    融合BERT向量与TextRank的关键词抽取方法

    结合文档本身的结构信息与外部词语的语义信息,提出一种融合BERT向量与 Textrank的关键词抽取方法。在基于网络图的 Textrank方法基础上,引入语义差异性并利用BERT向量加权方式优化
    发表于 03-21 09:55 18次下载
    融合BERT<b class='flag-5'>词</b>向量与TextRank的<b class='flag-5'>关键词</b>抽取方法

    yield开始入门python协程

    本篇文章会先向你介绍一个陌生的 Python 关键词,他和 return 就像一对新兄弟,有相似之处,又各有不同。
    的头像 发表于 03-16 16:20 1008次阅读