位置: 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兑换美元)

  • 苹果13内存有几种(苹果13内存都有多大的)

    苹果13内存有几种(苹果13内存都有多大的)

  • 小米11是什么时候发布的(小米是什么时候开始种植的)

    小米11是什么时候发布的(小米是什么时候开始种植的)

  • 微信消息提示音的修改方法是什么(微信消息提示音怎么改)

    微信消息提示音的修改方法是什么(微信消息提示音怎么改)

  • 华为荣耀20s有人脸识别吗(荣耀20s())

    华为荣耀20s有人脸识别吗(荣耀20s())

  • 为什么我抖音没人浏览(为什么我抖音没有添加标签)

    为什么我抖音没人浏览(为什么我抖音没有添加标签)

  • 拼多多好友突然不见了(拼多多好友突然不见了没有删除)

    拼多多好友突然不见了(拼多多好友突然不见了没有删除)

  • iphone锁屏渐变怎么设置(苹果锁屏渐变)

    iphone锁屏渐变怎么设置(苹果锁屏渐变)

  • 佳能光刻机多少纳米(佳能光刻机做到多少nm了)

    佳能光刻机多少纳米(佳能光刻机做到多少nm了)

  • iphone11突然发出巨大嗡嗡声(iphone11突然发出噪音)

    iphone11突然发出巨大嗡嗡声(iphone11突然发出噪音)

  • 松下笔记本为什么贵(松下笔记本为什么便宜)

    松下笔记本为什么贵(松下笔记本为什么便宜)

  • 1080p是高清还是标清(1080p是高清还是全高清)

    1080p是高清还是标清(1080p是高清还是全高清)

  • 苹果手机质保期多长时间(苹果手机质保期内可以免费换电池吗)

    苹果手机质保期多长时间(苹果手机质保期内可以免费换电池吗)

  • 淘宝小黑群是什么(淘宝小黑群群主怎么发放红包)

    淘宝小黑群是什么(淘宝小黑群群主怎么发放红包)

  • 华为售后换屏幕跟原来一样吗(华为售后换屏幕需要人工费吗)

    华为售后换屏幕跟原来一样吗(华为售后换屏幕需要人工费吗)

  • 微型机中的硬盘属于(微型机的硬盘接口)

    微型机中的硬盘属于(微型机的硬盘接口)

  • 剪切的文件还能恢复吗(剪切出去的文件还能恢复吗)

    剪切的文件还能恢复吗(剪切出去的文件还能恢复吗)

  • 怎么消除电话号码标记(怎么消除电话号码卡)

    怎么消除电话号码标记(怎么消除电话号码卡)

  • 芒果tv怎么停止自动续费(芒果tv怎么停止续费vip微信)

    芒果tv怎么停止自动续费(芒果tv怎么停止续费vip微信)

  • 手机通知栏hd是什么意思(手机通知栏有个hd)

    手机通知栏hd是什么意思(手机通知栏有个hd)

  • 怎么在拼多多上卖东西(怎么在拼多多上开店)

    怎么在拼多多上卖东西(怎么在拼多多上开店)

  • 怎么把电话设置成关机(怎么把电话设置成正在通话中)

    怎么把电话设置成关机(怎么把电话设置成正在通话中)

  • 苹果max屏幕发黄正常吗(iphonexsmax手机屏幕发黄)

    苹果max屏幕发黄正常吗(iphonexsmax手机屏幕发黄)

  • 好看视频如何删除(好看视频如何删除评论)

    好看视频如何删除(好看视频如何删除评论)

  • 为什么在XP/WIN7系统总是提示提交错误报告?(为什么在监狱拉屎都拉不方便)

    为什么在XP/WIN7系统总是提示提交错误报告?(为什么在监狱拉屎都拉不方便)

  • 目标检测算法——YOLOv7改进|增加小目标检测层(目标检测算法有哪些)

    目标检测算法——YOLOv7改进|增加小目标检测层(目标检测算法有哪些)

  • 税务师考试要求核酸检测
  • 普通发票附注一般填什么
  • 暂估收入的必要条件
  • 企业收到劳务费发票账务处理
  • 30人以上的企业有哪些
  • 记账凭证工资表
  • 资产负债表预收预付账款怎么填
  • 制造企业发出材料成本的计价方法
  • 公司投资控股其他公司如何做账务处理
  • 取得无形资产当期收入
  • 买的厨房用品算什么费用
  • 材料盘亏可收回成本吗
  • 标书费收据丢失怎么办
  • 开出的发票什么情况下需要补税?
  • 停车场需要对车辆负责吗
  • 工伤保险费发票
  • 劳务费个人所得税税率表2023最新
  • 小微企业季度所得税怎么计算
  • 开具的增值税专用发票上注明的价款为50万元
  • 小规模未开票收入要交增值税吗
  • 把股份转给别人怎么处理
  • 小规模公司税控盘维护费会计分录
  • 呆账怎么写会计分录
  • 正回购和逆回购的区别
  • 用U盘安装苹果系统
  • windows安全警报关不掉
  • windows右键刷新总是卡住
  • 销售回款率怎么计算
  • widows11预览版
  • 产品工人工资会扣税吗
  • php的js
  • 孚日山脉猞猁
  • laravel怎么用
  • 工装进福利费还是劳保费
  • 企业销售商品应该向购货单位收取的货款
  • 关于猿猴的作文
  • 用php写个简单的编程
  • php实现页面静态化
  • 确认收入与结转成本会计分录怎么写
  • 物业管理服务小组职责
  • 失业保险金支出项目14项
  • 电子税务怎么绑定开票员信息
  • 虚开增值税发票不是也要缴税吗
  • 财务费用在贷方,怎么结转到本年利润?
  • 企业租赁收入如何纳税
  • 公司车辆缴纳车船税
  • excel内账报表
  • 资产现金流量收益率为什么不是净利润除以平均现金流量
  • 员工为公司垫费合法吗
  • 预付卡销售成品油会计分录
  • 预缴增值税怎么计提
  • 计提社保公积金的账务处理
  • 软件公司购进软件会计科目
  • 代收水电费如何入账
  • 滴滴普票可以计算抵扣吗
  • 一般纳税人拿到普票怎么处理账务
  • 案例分析购入办法怎么写
  • 物流行业会计的工作内容
  • 企业所有者权益是指什么
  • winXP系统还能用吗
  • fedora系统怎么设置停电关机
  • xp系统玩英雄联盟出现win32
  • ubuntu系统中如何安装WiFi驱动
  • 系和系怎么区分
  • mac怎么获取文件路径快捷键
  • win10系统预览版
  • 苹果官网
  • win8怎么共享电脑
  • centos7安装软件包命令
  • synergy linux
  • 电脑导航阻止怎么办
  • ExtJS Grid使用SimpleStore、多选框的方法
  • python函数enumerate
  • dos替换文件命令
  • python 爬取
  • jQuery中Nicescroll滚动条插件的用法
  • android开发是什么意思
  • 异地车如何查车主信息
  • 怎样理解句子我还没弄清楚是怎么回事
  • 转让土地的土地增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设