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

  • 小米平板5pro5g能打电话吗(小米平板5pro5G能用wifi吗?)

    小米平板5pro5g能打电话吗(小米平板5pro5G能用wifi吗?)

  • 钉钉PC端V6.3.35版本(钉钉下载pc版)

    钉钉PC端V6.3.35版本(钉钉下载pc版)

  • 钉钉在线课堂怎么看到全体学生(钉钉在线课堂怎么关闭摄像头)

    钉钉在线课堂怎么看到全体学生(钉钉在线课堂怎么关闭摄像头)

  • opporeno7pro是曲屏还是直屏(opporeno7是曲面屏吗)

    opporeno7pro是曲屏还是直屏(opporeno7是曲面屏吗)

  • 键盘中英文怎么转换(键盘中英文怎么切换)

    键盘中英文怎么转换(键盘中英文怎么切换)

  • 导航gps弱怎么回事(只要导航gps就弱)

    导航gps弱怎么回事(只要导航gps就弱)

  • 华为声音变小怎样解决(华为手机声音调小)

    华为声音变小怎样解决(华为手机声音调小)

  • 荣耀x10支持wifi6吗(荣耀X10支持快充吗)

    荣耀x10支持wifi6吗(荣耀X10支持快充吗)

  • 微信授权是什么意思(微信授权管理是啥意思)

    微信授权是什么意思(微信授权管理是啥意思)

  • win10高级启动是什么(window10的高级启动)

    win10高级启动是什么(window10的高级启动)

  • 笔记本jkl按出来是123怎么回事(笔记本按j出1)

    笔记本jkl按出来是123怎么回事(笔记本按j出1)

  • 抖音拍视频脸大怎么调(抖音拍视频脸大怎么办)

    抖音拍视频脸大怎么调(抖音拍视频脸大怎么办)

  • v1962a是什么手机(u-magic是什么手机)

    v1962a是什么手机(u-magic是什么手机)

  • 设置朋友圈权限对方知道吗(设置朋友圈权限仅聊天是什么意思)

    设置朋友圈权限对方知道吗(设置朋友圈权限仅聊天是什么意思)

  • iphone8能升级ios13吗(iphone8能升级ios15.7吗)

    iphone8能升级ios13吗(iphone8能升级ios15.7吗)

  • ip是什么协议(ip协议是一种什么协议)

    ip是什么协议(ip协议是一种什么协议)

  • 苹果黑名单管理在哪里(苹果黑名单设置在哪里)

    苹果黑名单管理在哪里(苹果黑名单设置在哪里)

  • word文档怎样制作目录(WORD文档怎样制作PPT)

    word文档怎样制作目录(WORD文档怎样制作PPT)

  • word怎么排序号(word自动排序号123)

    word怎么排序号(word自动排序号123)

  • 小米9pro怎么打开导航键(小米9pro怎么打开OTG)

    小米9pro怎么打开导航键(小米9pro怎么打开OTG)

  • 微信怎么查谁看了我的朋友圈(微信怎么查谁看过我的主页)

    微信怎么查谁看了我的朋友圈(微信怎么查谁看过我的主页)

  • 微店买东西可以退货吗(微店买东西可以用支付宝吗)

    微店买东西可以退货吗(微店买东西可以用支付宝吗)

  • 小爱音箱没有wifi可以用吗(小爱音箱没有wifi怎么连接手机)

    小爱音箱没有wifi可以用吗(小爱音箱没有wifi怎么连接手机)

  • vivoz3i标准版怎么按返回(vivoz3i标准版怎样才能用OTG)

    vivoz3i标准版怎么按返回(vivoz3i标准版怎样才能用OTG)

  • 怎么调照片大小kb(金山文档怎么调照片大小)

    怎么调照片大小kb(金山文档怎么调照片大小)

  • iphonex锁屏模糊(iphone锁屏变模糊不清)

    iphonex锁屏模糊(iphone锁屏变模糊不清)

  • 怎么检查电脑硬件故障问题?(怎么检查电脑硬件是否正常)

    怎么检查电脑硬件故障问题?(怎么检查电脑硬件是否正常)

  • Linux系统中网络数据存储工具命令TcpDump的使用教程(linux系统网络日志)

    Linux系统中网络数据存储工具命令TcpDump的使用教程(linux系统网络日志)

  • 增值税普通发票怎么开
  • 增值税和城建税怎么算
  • 土地增值税应纳税额如何计算
  • 股权转让怎么申报
  • 印花税不用计提会计第几号准则
  • 生产工人工资和福利费是产品成本项目对吗
  • 付款给对方的会计分录
  • 员工出差的住宿费计入什么科目
  • 农民为什么没有说理的地方
  • 房地产开发精装房是国家规定吗
  • 公司车买保险怎么付款
  • 公司购车按揭利息可以开票吗
  • 小型微利企业减按25%计算应纳税所得额
  • 广告宣传怎么开发票
  • 收到购货单位货款属于什么会计科目
  • 取得虚开增值税专用发票罪量刑标准
  • 企业收取的押金要开票吗
  • 企业所得税怎么征收几个点
  • 企业出租自有厂房超经营吗
  • 红字发票可用于入账吗
  • 实际销售金额是开票金额吗
  • 财税〔2017〕39号商业健康保险个人所得税
  • 董事费监事费高管薪酬标准
  • 公司账户流水要交税吗
  • 中小企业固定资产管理存在的问题
  • 制造费用分配的的标准是什么?
  • 未做账怎么补账
  • 公司基本账户冻结怎么办
  • 支付境外关联方借款利息需要的
  • 工商局查社保吗
  • linux命令“ln file1 file2”的含义是
  • win 7系统如何备份
  • 收到人才引进已受理的短信
  • 出差的误餐费会计分录
  • createsystem
  • 根据完工产品编制记账凭证
  • 购入已提完折旧的固定资产怎么入账
  • windows 平台
  • 老板垫付的货款会计分录
  • php加密文件解密
  • idea安装vue.js
  • thinkphp5框架介绍
  • jsp连接mysql8数据库
  • 深入理解php类的知识
  • 锁定vlookup快捷键
  • vue文件下载功能
  • 支付货款没有收据怎么办
  • 增值税普通发票税率
  • pyqt 菜单
  • 个人以不动产投资成立一人有限公司
  • 成本法合并抵消分红
  • 广告公司的一般纳税人税率是多少
  • 商誉在资产负债表中如何体现
  • 代购进口货物垫付方案
  • 企业享受政府补贴的具体方式
  • 营业账簿印花税申报流程
  • 毛利润和纯利润
  • 高新技术企业支付特许权使用费
  • 收到的货品与实物不符
  • 应收账款如何做坏账
  • 收入与成本不配合
  • 开票需要缴纳印花税吗
  • 工程未完工开了发票怎么做账
  • 用mysql的小技巧
  • sqlserver数据库怎么导出
  • Windows Server 2008网络中顺畅访问“邻居”
  • wysafe.exe是什么
  • windows7录音怎么录
  • 如何让电脑启动更快
  • win8进入电脑休眠后怎么唤醒
  • windows7如何关闭update
  • Linux系统下的Samba客户端配置
  • microsoft build
  • javascript编程规范
  • unity3D游戏开发
  • unity2019texture
  • shell脚本的实现
  • super函数python
  • 江苏省税务局电话咨询热线
  • 公司借款给员工是否合法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设