位置: 编程技术 - 正文

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如何入门)

  • 公允价值变动损益属于什么科目
  • 代扣代缴增值税是什么意思
  • 财务报表中的存货怎么做掉
  • 出租房屋确认收入列简易计税还是销项税
  • 建筑行业税负率表2023最新
  • 公司卖房产怎么缴税
  • 本金加收入减支出等于的是利润吗
  • 货物出口到保税区复进口
  • 行政事业单位核算的应交税费包括
  • 社保基数超过工资
  • 计提劳务成本月末需要结转吗
  • 公司能否投资非盈利组织?如何做账
  • 合伙企业购买股票产生的收益需要缴纳税款吗
  • 增值税普通发票和专用发票有什么区别
  • 六月涉税提醒通知
  • 注册资金怎么提出来
  • 所得税季度申报营业收入填什么
  • 买方投资公司
  • 其他货币资金怎么做账
  • 土地使用税计税依据及计算方式
  • 租入房屋修缮费用谁承担
  • 发生坏账损失账务处理
  • 重装系统最好排名
  • 收到销售折让销售怎么做
  • php 数字转中文
  • 琼斯的大海怪
  • 商贸企业税收优惠政策
  • 取得基建借款分录
  • 公司向个人借款利息如何处理
  • php字段
  • uniapp单选功能
  • PHP:mcrypt_enc_get_block_size()的用法_Mcrypt函数
  • vue写css
  • php的数据结构
  • PHP:imageconvolution()的用法_GD库图像处理函数
  • phpstrcmp函数
  • framework core
  • LangChain与大型语言模型(LLMs)应用基础教程:信息抽取
  • JavaScript基础_1
  • 线程池中的一个线程执行完一个任务后
  • 帐载金额
  • 预计净残值影响营业利润吗
  • 工程施工和工程结算的账务处理
  • 对公账户办理的早晚,对公司有没有影响
  • 公司向个人借款合法吗
  • 在租赁公司贷款买的车绿本上会有我的名字吗
  • 注销退税后又补税了
  • 海关报关单海关签章
  • 当月发生业务下月开票如何做账
  • 长期股权投资如何确认
  • 旅行社差额征收税率多少
  • 企业有进项税额,无销项税额
  • 应交增值税为什么在借方
  • 坏账准备与应收账款的影响有哪些
  • 收入成本率多少合理
  • 登记三栏式现金日记账和银行存款日记账的依据
  • mysql触发事件
  • mysql存储数据的原理
  • doc怎么使用
  • xp系统找不到指定的路径怎么办
  • 如何关闭系统快捷键
  • windows下命令
  • 制作winxp启动u盘和安装盘
  • win10 mobile 1709
  • mplugin.exe是什么
  • win1021年更新
  • win7打开文件提示用户没有访问权限怎么办
  • win7打开软件总提示错误怎么解决
  • linux如何更改文件夹权限
  • react 同级组件之间传值
  • 安卓游戏源代码
  • mysql 导出指定表
  • 应用框架的设计方法
  • js script跨域
  • 税务怎么在外网申报
  • 企业党支部怎么称呼
  • 青岛电子税务局电话人工客服电话
  • 国家税务局关于印发的通知
  • 考公务员国家税务局好吗
  • 水厂管理经验
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设