Python学习日记-第三十八天-生成器

news2025/1/11 12:02:12

系列文章目录

  • 生成器
  • 创建生成器的方法
  • 生成器-使用send方式唤醒
  • 使用yield完成多任务


一、生成器

利用迭代器,我们可以在每次迭代获取数据(通过next方法)时按照特定的规律进行生成,但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数据。为了到达记录当前状态,并配合next函数进行迭代使用,我们可以采用更简便的语法,即生成器,生成器是一种特殊的迭代器


二、创建生成器的方法

1.创建生成器的有很多种方法,第一种只需要把一个列表生成式的[ ]改成( )

 

然后 

 

注意:第二个()返回的是生成方式,主要优点是节省内存空间 

2. (主要方式)generator非常的强大,如果推算的算法比较复杂,用类似列表生成式的 for循环无法实现的时候,还可以用函数来实现

下面是使用生成器完成斐波拉契数列:

 输出结果:

 当代码运行到yield语句时,会自动断点,这时所返回的值就是最开始的a=0,如果要继续生成下一个值,就可以使用next方法,启动生成下一个值

 

注(如果一个函数中有yield语句,那么这个就不再是函数,而是一个生成器的模板。后面发现调用这个函数的时候,也不再是调用了,而是创建一个生成器)

同一个生成器模板,可以创建多个生成器


三、生成器-使用send方式唤醒

我们出了可以使用next函数来唤醒生成器继续执行外,还可以是用send函数来唤醒执行,使用send函数的一个好处是可以在唤醒的同时向断点处传入一个附加数据。所以一般都是需要传入数据的时候才会用send方法

操作:

这里是没有使用send的代码 

这个就是使用了send方法的代码,输出的结果是一样的,如果需要传入数据,可以直接在send()的括号里面添加,至于怎么接收,就需要在yield前面,加一个变量就行 


四、使用yield完成多任务

 

 代码:

import time


def task_1():
    while True:
        print("--1--")
        time.sleep(0.1)
        yield


def task_2():
    while True:
        print("--2--")
        time.sleep(0.1)
        yield


def main():
    t1 = task_1()
    t2 = task_2()
    while True:
        next(t1)
        next(t2)


if __name__ == "__main__":
main()

 


总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/54031.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pr:导出设置之基本视频设置

视频 VIDEO设置因所选导出格式而异。每种格式都有独特的要求,这些要求决定了哪些设置可用。以导出文件格式为 H.264 为例,下面给出有关基本视频设置 Basic Video Settings的选项及说明。匹配源Match Souce自动设定视频设置选项以匹配源视频的属性。支持匹…

项目一共30个模块,你叫我maven版本一个个手动改?

之前有个群友私聊问我,如何快速统一去更改项目中所有的maven版本号,他说之前都是手动一个个去修改,项目一共有30多个maven模块,上次因为漏改了一个,还造成了生产事故。 其实我自己开源项目有的工程也非常多&#xff0…

Java入门必备知识你能掌握多少?

1、Java是一种高级计算机语言,是可以编写跨平台应用软件、完全面向对象的程序设计语言。 2、Java划分为三个技术平台:Java SE、Java EE、Java ME Java SE是桌面应用,Java EE是web应用,平台企业版,Java ME是手机应用&…

亚马逊鲲鹏系统批量注册功能可以让你快速拥有大量亚马逊买家号

亚马逊鲲鹏系统是一款能批量注册买家号、AI智能一键养号、模拟真人行为轨迹进行刷单测评的软件,而对于批量注册买家号,操作也是比较简单的。 主要流程是购买了相应的账号所需资料后,通过批量导入邮箱、邮箱密码、信用卡、收货地址进入软件然后…

嵌入式分享合集114

一、DMA DMA,全称Direct Memory Access,即直接存储器访问。 DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。 我们知道CPU有转移数据、计算、控制程序转移等很多功能&…

拿到8000元的火焰杯比赛奖金,感谢霍格沃兹测试开发学社

下面是我们获奖学员自己主动分享的 然后发给霍格沃兹测试开发学社表示感谢的,收到她的反馈我们也由衷的开心。所以也分享给大家,目前无论是应届生 在校生还是从业人员,都可以加入第三届火焰杯比赛,赢取属于专属于自己的荣耀。 我…

学生HTML个人网页作业作品:基于HTML实现教育培训机构网站模板毕业源码(8页)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

[附源码]JAVA毕业设计霍山石斛网站(系统+LW)

[附源码]JAVA毕业设计霍山石斛网站(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&…

AutoJs7打包薅羊毛时间版

AutoJs7打包薅羊毛时间版 一、准备工作: autojs7 app 下载地址:Auto.js Pro7.apk - 蓝奏云薅羊毛时间版 下载地址: 亚丁号---文件下载 安卓手机一部外加数据线( Type-C或者USB),最好是安卓7的系统。电脑…

云服务器购买流程

云服务器购买流程 在技术学习的路上,除了虚拟机外最贴近实战的机器就是服务器。实际上在企业中有些小企业用的也是租赁的云服务器,有些是自己公司搭建的服务器。不管什么服务器了,实际上都是一样的,如果想更靠近企业级开发&#x…

Kotlin高仿微信-第52篇-搜索好友

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

HTTP

文章目录一、HTTP 基本概念GET 与 POSTHTTP 特性HTTP 与 HTTPSHTTP/1.1、HTTP/2、HTTP/3 演变HTTP/1.1如何优化如何避免发送 HTTP 请求?如何减少 HTTP 请求次数减少重定向请求次数合并请求延迟发送请求如何减少 HTTP 响应的数据⼤⼩?⽆损压缩有损压缩HTT…

YGG 和 BlockchainSpace 举办全国最大的 Web3 活动:Philippine Web3 Festival

2022 年 11 月 14 日至 18 日,Yield Guild Games (YGG) 和 BlockchainSpace 在菲律宾共同举办了迄今为止最大的 web3 活动,汇集了来自世界各地的游戏玩家、建设者、投资者、开发者、教育工作者和艺术家加入 web3 的应用。该活动吸引了来自 web3 社区的数…

计算机网络——TCP/IP模型

OSI参考模型与TCP/IP标准模型 OSI模型先出现理论,并没有实践,只是一个法定参考模型。 TCP/IP模型出现早,应用早。TCP/IP模型其实是先诞生一个协议栈。 再出现TCP/IP参考模型 TCP/IP模型中的网络接口层其实是把数据链路层和物理层进行合并了…

电脑桌面文件不见了怎么恢复?

众所周知,我们都会在电脑桌面上放置各种文件、文件夹等,这样很容易造成文件堆积过多,桌面杂乱无章,影响查找文件速度。这不可避免的要对电脑桌面进行整理,但有时候我们会出现重要文件突然就找不到了,这时电…

RabbitMQ延时队列

延时队列内部是有序的,最重要的特性就是延时,延时队列中的元素是希望在指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列。 使用场景 订单在十分钟之内未支付则自动取消新创建…

新上线软件需不需要防御?

导语:随着5G时代到来和ipv6的普及,攻击者手段层出不穷,从一开始简单的DDOS分布式拒绝服务,后到蔓延ACK 从不同协议通讯层面发起的攻击,现在CC请求类型攻击,已经可以绕过域名验证,以及模拟正常用…

css实现价格降价线

比较简单&#xff0c;直接上代码 <div class"container"><div>今日价格&#xff1a;$9.99</div><div>商品原价&#xff1a;<span class"price">$49.99</span></div> </div>.price {text-decoration: lin…

GJB 5000B二级-II实施基础

本实践域为新增实践域   思想:以GJB5000A的共用过程域中不乏实践为基础进行提炼并提升,结合各个行业的优秀实践和行业特点,坚持问题导向,使标准更具有指导性和可操作性;充分借鉴GJB9001C中:“4组织环境”、“7支持”的相关内容,形成实施基础实践域。本实践域强调突出重…

让你真实的看见 TCP 三次握手和四次挥手到底是什么样!

前言 TCP 建立连接是三次握手&#xff0c;而断开连接是四次挥手。 但事实上从你打开这篇文章&#xff0c;到关掉这篇文章&#xff0c;你是看不见这个过程的。 那 TCP 建立连接和断开连接的过程是不是真的如大多数文章所描绘的一样&#xff1f; 带着这些疑问&#xff0c;那就…