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

  • 和你执手相拥碎步流年(执手相拥是什么意思)

    和你执手相拥碎步流年(执手相拥是什么意思)

  • 三星note9越用越卡(三星note9为什么这么重)

    三星note9越用越卡(三星note9为什么这么重)

  • 华为笔记本充电须知(华为笔记本充电70就不充了)

    华为笔记本充电须知(华为笔记本充电70就不充了)

  • EXCEL怎么把表格里的字变成竖的(excel怎么把表格变成图片)

    EXCEL怎么把表格里的字变成竖的(excel怎么把表格变成图片)

  • 怎样下载爱奇艺视频到手机(怎样下载爱奇艺国际版)

    怎样下载爱奇艺视频到手机(怎样下载爱奇艺国际版)

  • 苹果手机拆过影响大吗(苹果手机拆过影响质保吗)

    苹果手机拆过影响大吗(苹果手机拆过影响质保吗)

  • 抖音小店能注销吗(抖音小店能注销重新开吗)

    抖音小店能注销吗(抖音小店能注销重新开吗)

  • 微信上视频号是什么意思(微信上视频号是什么软件)

    微信上视频号是什么意思(微信上视频号是什么软件)

  • 微信老是提示被投诉(微信总是提示被盗嫌疑怎么解决)

    微信老是提示被投诉(微信总是提示被盗嫌疑怎么解决)

  • 单16g和双8g 性能差别(单根16g和双8g差距)

    单16g和双8g 性能差别(单根16g和双8g差距)

  • 直播被永久封了怎么办(直播被永久封了怎么解封)

    直播被永久封了怎么办(直播被永久封了怎么解封)

  • vivox27左侧键是干嘛的(vivox27按键功能)

    vivox27左侧键是干嘛的(vivox27按键功能)

  • 电脑能用手机摄像头吗(电脑用手机摄像头视频)

    电脑能用手机摄像头吗(电脑用手机摄像头视频)

  • iphone等待抹掉要多久(抹掉我的iphone 一直显示等待抹掉)

    iphone等待抹掉要多久(抹掉我的iphone 一直显示等待抹掉)

  • 微信怎么看一年的收入和支出(微信怎么看一年换了多少头像)

    微信怎么看一年的收入和支出(微信怎么看一年换了多少头像)

  • 手机有个耳机标志,手机没声音(手机有个耳机标志,手机没声音怎么调)

    手机有个耳机标志,手机没声音(手机有个耳机标志,手机没声音怎么调)

  • 怎么找快手删过的作品(怎么找删除的快手)

    怎么找快手删过的作品(怎么找删除的快手)

  • findx标配快充多少w(findx快充多少w)

    findx标配快充多少w(findx快充多少w)

  • 怎么拒绝滴滴行程分享(怎么拒绝滴滴发来信息)

    怎么拒绝滴滴行程分享(怎么拒绝滴滴发来信息)

  • ipad怎么修改音乐播放器(ipad音质怎么调)

    ipad怎么修改音乐播放器(ipad音质怎么调)

  • 手机电话图标没了咋办(手机电话图标没了怎么恢复)

    手机电话图标没了咋办(手机电话图标没了怎么恢复)

  • macOS 10.13允许任何来源没有了怎么办?macOS 10.13允许任何来源没了开启步骤

    macOS 10.13允许任何来源没有了怎么办?macOS 10.13允许任何来源没了开启步骤

  • python单向链表如何实现(python单链表的创建)

    python单向链表如何实现(python单链表的创建)

  • 公司处理固定资产的账务处理
  • 还有什么技术
  • 消费税的计算方法有哪三种
  • 如何开局增值税发票
  • 法人股东分红要交企业所得税吗
  • 销售货物应税劳务服务清单给客户一份是不是就可以了
  • 会计调转是什么意思
  • 技术服务费3%
  • 公司个人薪金怎么申报宁波
  • 信息服务费可以计入办公费吗
  • 银行现金支票怎么填
  • 收到投资款的会计
  • 支付劳务收入怎么做账
  • 固定资产一次性扣除政策2023
  • 无形资产摊销是增加还是减少
  • 定额发票上盖什么章
  • 海关进口增值税怎么认证抵扣
  • 个体工商户个人经营所得税优惠政策
  • 电子营业执照可以开通抖音小店吗
  • 查验发票真伪新旧有哪些网站?
  • 进项票没开过来可以先开销项票吗
  • 公司收境外汇款
  • 一般纳税人设备租赁税率
  • 研发支出的台账由谁做
  • 委托加工存货要交什么税
  • 天猫技术服务费什么时候返还
  • 1697508581
  • 期权的行权收益
  • 企业年金基金投资管理人应当履行什么职责
  • 如何使用腾讯电子签维护自己的权益
  • 退税收入计入营业外收入吗
  • windows11如何删除账户
  • 网络适配器感叹号代码43
  • 国外差旅费如何报销
  • 如何整理流水账目
  • 计提本月应交税金会计分录
  • 视同销售成本如何确认?
  • 注销库存股的会计分录怎么理解
  • 表格uplook
  • 论文可查
  • 智能驾驶adas概念股龙头
  • css3题目
  • vue3 响应式ui框架
  • lincom命令
  • mkdir命令怎么用
  • 境外捐赠入账
  • 混合销售行为的例子
  • 补交所得税会计处理方法包括
  • 公司的车过户到个人名下需要什么手续
  • 长期待摊费用做账
  • 个税里的年金是指
  • 代理赚差价违法吗
  • 个税 退手续费
  • 出口退税综合服务网
  • 金蝶制造费用明细如何查询
  • 有效年利率和报价利率
  • win7怎么隐藏我的电脑
  • 安装并激活navicat
  • vmware虚拟机安装Linux教程
  • xp系统文件损坏怎么修复
  • 如何创建一个wifi
  • win1020h2版本怎么更新
  • xp系统怎么禁止启动项
  • leerfel是什么牌子
  • win8系统游戏
  • 如何装win8.1
  • javascript that
  • jquery多选
  • 自动重启服务脚本
  • 基于arcgis的python编程
  • 深入理解javascript特性.pdf
  • 在JavaScript中声明变量的关键词有
  • js如何深度克隆一个对象
  • pypy 使用
  • 魔兽世界全部开发成本
  • javascirpt
  • jquery简单吗
  • 工会经费怎么缴纳不了
  • 如何做好税收工作推动税收事业创新发展
  • 全面推进行政执法公示制度包含的主要内容有
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设