位置: 编程技术 - 正文

Python中Iterator迭代器的使用杂谈(iterator python)

编辑:rootadmin

推荐整理分享Python中Iterator迭代器的使用杂谈(iterator python),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python中iteration,python迭代器的__next__方法,python迭代器iter,iterate python,python的iterable,iterator iterable python,iterator iterable python,python中iteration,内容如对您有帮助,希望把文章链接给更多的朋友!

迭代器是一种支持next()操作的对象。它包含一组元素,当执行next()操作时,返回其中一个元素;当所有元素都被返回后,生成一个StopIteration异常。

ite()可以接受多种Python对象为参数,比如list,tuple, dict, set等,并将其转化为迭代器。迭代器可以用于for语句或in语句中。很多常用操作也是支持迭代器的,比如sum(), max()等。

毋庸置疑,迭代器有很多好处:

1.“流式”数据处理方式减少内存消耗:比如处理文件,一下猛地把全部数据全部取出来放到内存里面进行处理会导致程序消耗大量内存,有时甚至没法做到,一般我们会一部分一部分的对文件内容进行处理:

2.或者对xml文件进行处理的时候:

内置函数open返回的file对象和etree.iterparse序列化的xml tree都是可迭代对象,能够让我们渐进式地对文件的内容进行处理。

3.支持方便用for语句对数据进行消费:python内置的一些常见的像类型像数组、列表甚至字符串等都是可迭代类型,这样我们就能方便for语句这个语法糖方便对数据进行消费,不需要自己记录索引位置,人肉循环:

Python中Iterator迭代器的使用杂谈(iterator python)

简单了解了一下迭代器的好处后,我们正正经经的聊聊python的迭代器模式。在这里我们引入两个比较绕口的名词:可迭代对象和迭代器对象,个人觉得从这两个概念下手会对迭代器有比较好的理解。在放例子前先对这两个概念给一个不入流的解释:

可迭代对象:对象里面包含__iter()__方法的实现,对象的iter函数经调用之后会返回一个迭代器,里面包含具体数据获取的实现。迭代器:包含有next方法的实现,在正确范围内返回期待的数据以及超出范围后能够抛出StopIteration的错误停止迭代。放个例子边看边说:

例子中的iterable_range是一个可迭代对象,所以我们也能够对它用for语句来进行迭代:

输出:

大家可以仔细地看一下输出的日志:

数据确实是“流式”处理的 iterator是真正在背后做事的人 for语句能够非常方便的迭代对象的数据。

可迭代对象其实更像是整个迭代器模式模式的上层,像一种约束一种契约一种规范,它能够保证自己能够返回一个在实际工作中干活的迭代器对象。for、sum等接受一个可迭代对象的方法都是遵循这样的规范:调用对象的__iter__函数,返回迭代器,对迭代器对象返回的每个值进行处理抑或需要一些汇总的操作。拿for举个例子:

for这个语法糖背后的逻辑差不多就是上面例子中代码所示的那样:首先获取可迭代对象返回的迭代器对象,然后调用迭代器对象的next方法获取每个值,在获取值的过程中随时检测边界-也就是检查是否抛出了StopIteration这样的错误,如果迭代器对象抛出错误则迭代停止(note:从这个例子可以看出,对于那些接受可迭代对象的方法,如果我们传一个单纯的迭代器对象其实也是无法工作的,可能会报出类似于TypeError: iteration over non-sequence的错误)。当然了,一般在应用过程中我们不会将他们特意的分开,我们能够稍微对迭代器对象进行修改一下,添加__iter__方法的实现,这样对象本身就既是可迭代对象也是一个迭代器对象了:

输出:

深入学习Python中的装饰器使用 装饰器vs装饰器模式首先,大家需要明白的是使用装饰器这个词可能会有不少让大家担忧的地方,因为它很容易和设计模式这本书里面的装饰器模式发生

步入门Python中的decorator装饰器使用方法 装饰器(decorator)是一种高级Python语法。装饰器可以对一个函数、方法或者类进行加工。在Python中,我们有多种方法对函数和类进行加工,比如在Python闭包

Python编程中装饰器的使用示例解析 装饰函数和方法我们先定义两个简单的数学函数,一个用来计算平方和,一个用来计算平方差:#getsquaresumdefsquare_sum(a,b):returna**2+b**2#getsquarediffdefsquare_dif

标签: iterator python

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

上一篇:实例讲解Python编程中@property装饰器的用法(python编程简单案例)

下一篇:12步入门Python中的decorator装饰器使用方法(python如何入门)

  • 增值税发票认证平台进不去什么原因
  • 增值税专用发票抵扣最新规定
  • 企业存款利息收入缴纳企业所得税吗
  • 股权收购收购方支付的期间损益计入
  • 赔偿费计入费用减应收账款怎么做账
  • 存货的领用
  • 加工费暂估入库的会计分录
  • 英国租金收入所得税
  • 预付材料款的会计分录怎么写
  • 风险溢价包括哪些违约风险溢价 流动性风险溢价
  • 视同销售可以抵扣销项税吗?
  • 软件著作权如何入账
  • 发票限额是含税还是不含
  • 未办预售证,企业取得这笔收入要缴增值税吗?
  • 享受高新技术企业优惠的条件之一
  • 企业汽油费会计分录
  • 收到政府补助用于购买环保设备
  • 收不回工程款的心情
  • 印花税按含税收入还是不含税收入
  • 补付工程款会计分录
  • 修叉车这个工作怎么样
  • 餐查账征收企业所得税会计分录?
  • 一般纳税人增值税结转账务处理
  • win11电脑下载的软件桌面没有图标怎么办
  • 电脑休眠和睡眠什么差别
  • proflwiz.exe - proflwiz是什么进程 有什么用
  • win11怎么下载手机应用
  • 汇算清缴时研发费用加计扣除怎么做账
  • 负债率是什么指标
  • 长期股权投资的账务处理
  • 债券类资产的远期合约是什么
  • 固定资产包括哪些种类
  • 王者荣耀如何进入3D视角
  • 收到员工罚款分录怎么记账
  • wordpress注册界面
  • wirecut.exe
  • cesium加载s3m
  • 软件工程毕设题目冷门
  • 工业企业应付账款周转率多少合适
  • 个体工商户减免个人所得税政策
  • 资产现金流量收益率计算方法
  • 前端的基础知识
  • 如何判断自己风寒还是风热
  • 垃圾分类手工小模型
  • 【JavaScript 刨根问底之】requestAnimationFrame以及延时器
  • 微信公众号开发淘宝客
  • 增值税申报表各栏怎么填
  • 员工办理健康证需要什么材料
  • 转账收手续费不
  • 医疗机构收据
  • 资产处置收益的账务处理
  • 收益相关的政府补助账务处理
  • 预缴所得税亏损费用金额大会被监测到吗?
  • 员工出差回来会计分录
  • 企业残保金该什么时间交
  • sql2008还原到2012
  • 印花税技术合同包括什么
  • 一般纳税人简易计税方法适用情形
  • 在创业板上市公司首次公开发行股票的条件
  • 可供出售债权投资
  • 存货报废计入
  • 车辆保险发票能补开吗
  • 简述什么是实收资本
  • mysql 连接语句
  • win8.1打开软件显示Error远程配置获取失败请重新启动
  • ubuntu系统中文件夹不能改名
  • win7无法删除d盘
  • linux系统怎么弄
  • jquery 动态加载js
  • unity音乐thefatrat
  • unity保存项目
  • 命令行执行bat文件
  • Android---43---Service之IntentService
  • JavaScript Switch 声明
  • js缩小图片尺寸
  • 全国残疾人工作先进个人
  • 纽约消费税多少
  • 北京重点税源直报平台登录
  • 租赁发票交多少税费
  • 国家产业政策是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设