位置: IT常识 - 正文

Python创建生成器的两种方法(python生成器定义)

编辑:rootadmin

推荐整理分享Python创建生成器的两种方法(python生成器定义),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python生成器怎么用,python生成器定义,python中的生成器,python生成器怎么用,python生成器怎么用,python3 生成器,python中的生成器,python生成器有几种写法,内容如对您有帮助,希望把文章链接给更多的朋友!

创建生成器方法

方法一

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

创建L和G的区别仅在于最外层的[ ]和( ),L是一个列表,而G是一个生成器。我们可以直接打印出L的每一个元素,但我们怎么打印出G的每一个元素呢?如果要一个一个打印出来,可以通过next()函数获得生成器的下一个返回值:

运行结果:

运行结果:

生成器保存的是算法,每次调用next(G),就计算出G的下一个元素的值,直到计算到最后一个元素,没有更多的元素时,抛出StopIteration的异常。当然,这种不断调用next()实在是太变态了,正确的方法是使用for循环,因为生成器也是可迭代对象。所以,我们创建了一个生成器后,基本上永远不会调用next(),而是通过for循环来迭代它,并且不需要关心StopIteration异常。

相关推荐:《Python视频教程》

方法2

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

Python创建生成器的两种方法(python生成器定义)

比如,著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到:

1, 1, 2, 3, 5, 8, 13, 21, 34, ...

斐波拉契数列用列表生成式写不出来,但是,用函数把它打印出来却很容易:

运行结果:

仔细观察,可以看出,fib函数实际上是定义了斐波拉契数列的推算规则,可以从第一个元素开始,推算出后续任意的元素,这种逻辑其实非常类似generator。

也就是说,上面的函数和generator仅一步之遥。要把fib函数变成generator,只需要把print(b)改为yield b就可以了:

运行结果:

在上面fib的例子,我们在循环过程中不断调用yield,就会不断中断。当然要给循环设置一个条件来退出循环,不然就会产生一个数列出来。同样的,把函数改成generator后,我们基本上从来不会用next()来获取下一个返回值,而是直接使用for循环来迭代:

运行结果:

但是用for循环调用generator时,发现拿不到generator的return语句的返回值。如果想要拿到返回值,必须捕获StopIteration错误,返回值包含在StopIteration的value中:

运行结果:

相关推荐:

本文链接地址:https://www.jiuchutong.com/zhishi/304701.html 转载请保留说明!

上一篇:Python学习笔记(十一)-- Django API RESTful(python初学笔记)

下一篇:python美元转换成人民币转换代码(python兑换美元)

  • 小规模纳税人本月应交增值税
  • 居间费用如何纳税
  • 收付实现制有应收应付吗
  • 收据四联分别叫什么
  • 改签费可以进项转出吗
  • 成品油认证步骤
  • 工资没走公账走的私人账户合法吗
  • 专用存款账户需要备案吗
  • 死账呆账的处理程序
  • 所有逾期未抵扣进项税额
  • 当年实现的利润属于资产吗
  • 机关单位工会经费的来源包括
  • 驻外人员医保报销
  • 零余额账户银行余额调节表
  • 买东西几块钱忘付了怎么办
  • 成本核算会计科目包括
  • 电费发票勾选是啥意思
  • 当月认证的发票可以当月抵扣吗
  • 电费收入印花税如何计算
  • 小规模纳税人减免增值税会计处理
  • 增值税2017年起征点
  • 办公低值易耗品的账务处理
  • 定额手撕发票怎么买
  • 预估成本费用会计科目
  • 什么情况财务费用是负数
  • win11如何在开机的时候进入安全模式
  • 业务招待费是收入的
  • 哪些情况下可以终止心肺复苏
  • php基础语法
  • 兼职人员工资如何扣税
  • 怎样删除电脑系统账户
  • php ftp管理系统
  • PHP:rawurlencode()的用法_url函数
  • PHP:oci_fetch_all()的用法_Oracle函数
  • antd 级联多选
  • 自费出版的书籍可以售卖吗
  • 购买房屋缴纳的税款
  • php模板引擎语法
  • 企业的研发费用如何进行账务处理
  • 弃置费用摊销例题
  • 企业提前还贷为什么违约
  • python如何使用requests检查请求
  • 材料可变现净值为什么不减去材料的销售费用
  • 购买不动产增值税率
  • 企业利润怎么算出来的
  • sql语句学习
  • sql server 3417错误
  • mysql数据备份的方式
  • mysql忽略大小写设置
  • xp系统安装惠普1010教程
  • 怎样破解bios密码
  • Win10控制面板在c盘哪里
  • docker 自启动
  • Windows 7 64位系统手动添加Editplus到鼠标右键的方法
  • webcolct.exe - webcolct 是什么进程
  • wfxsnt40.exe - wfxsnt40是什么进程
  • win10修改启动
  • 重装Windows11
  • wps文字打印不清楚怎么办
  • windows勒索病毒
  • win7搜索选项
  • 如何不让qq开机自启
  • windowsxpsp3是什么版
  • linux防火墙放行
  • 深入了解linux内核
  • Win10怎么更换主题
  • linux如何绑定域名
  • android开启adb
  • shell exec重定向
  • 拖拽js实现
  • node转go
  • 利用pm2部署多个设备
  • python黑帽子怎么样
  • python列表的常用方法有哪些
  • 个体户税务三方协议必须签吗
  • 残疾人保障金税前扣除规定
  • 税务暂停办理业务通知
  • 航天信息服务费300元
  • 地税局属于国家公务员吗
  • 商贸有限公司怎么运营
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设