文档章节

Python迭代器

o
 osc_1ee7cxmx
发布于 2018/08/06 15:22
字数 791
阅读 7
收藏 0

精选30+云产品,助力企业轻松上云!>>>

一.迭代器

  迭代器指的是迭代取值的工具,迭代是指一个重复的过程,每一次重复都是基于上一次结果而来

  迭代提供了一种通用的不依赖索引的迭代取值方式

  一.可迭代对象

    但凡内置有__iter__方法的对象,都称为可迭代对象,可迭代的对象:str,list,tuple,dict,set,文件对象

  二.迭代器对象

    1既内置又__next__方法的对象,执行该方法可以不依赖索引取值

    2.又内置有__iter__方法的对象,执行迭代器的__iter__方法得到的依然是迭代器本身

    迭代器一定是可迭代对象,可迭代对象不一定是迭代器对象,文件对象本身就是一个迭代器对象

  例如:执行可迭代对象下的__iter__方法,返回一个迭代器对象,在通过迭代器对象的__next__方法取值,如果取值次数超过源值的数量就会报错

    

  执行结果:

    

  for循环本质为迭代器循环

  工作原理:

    1.先调用in后对象的__iter__方法,将其变成一个迭代器对象

    2.调用next(迭代器),将得到的返回值赋值给变量名

    3.循环往复直到next(迭代器)抛出异常,for会自动捕捉异常然后结束循环

  ps:可以从for的角度,分辨但凡可以被for循环取值的对象就是可迭代对象

  迭代器优点:

    1.提供了一种通用不依赖索引的迭代取值方式

    2.同一时刻在内存中只存在一个值,更节省内存

  迭代器缺点:

    1.取值不如按照索引的方式灵活,不能取指定的某一个值,只能往后取,不能往前去

    2.无法预测迭代器的长度

二.生成器

  生成器就是一种自定义的迭代器,本质为迭代器

  但凡函数内包含yield关键字,调用函数不会执行函数体代码,会得到一个返回值,该返回值就是生成器对象

  例如:

    

  执行结果:

    

  总结yield:只能在函数内使用

    1.yield提供了一种自定义迭代器的解决方案

    2.yield可以保存函数的暂停的状态

    3.yield对比return:相同点,都可以返回值,值得类型与个数没有限制,不同点:yield可以返回多次值,而return只能返回一次值函数就会结束

三.生成器表达式

    

  类似于列表生成式

  执行结果:

    

四.内置函数

  python提供了许多的内置函数.在编程中提供了许多方便

  如下图:

    

五.面向过程编程

  核心是过程二字,过程指的就是解决问题的步骤,即先干什么再干什么后干什么...
  基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维方式
  优点:复杂的问题流程化,进而简单化
  缺点:可扩展性差

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

MongoDB入门系列——3.可视化工具篇

点击上方,轻松关注!! 前面我们已经介绍了MongoDB怎么安装,接下来要安装他的可视化工具——Studio 3T。 先到这下载一个压缩包,百度网盘,https://pan.baidu.com/s/1M8mlWo334KE8I1_UA2Da...

学习Java的小姐姐
2018/11/08
17
0
分层图的绘制 python(来自国外课程)

Exercise 10: Hierarchical clustering of the grain data In the video, you learnt that the SciPy linkage() function performs hierarchical clustering on an array of samples. Use th......

齐勇cn
42分钟前
13
0
微信小程序超简单的双向绑定(类似vue的v-model)

<input model:value="{{value}}" />

祖达
42分钟前
9
0
为什么AngularJS在select中包含一个空选项? - Why does AngularJS include an empty option in select?

问题: I've been working with AngularJS for the last few weeks, and the one thing which is really bothering me is that even after trying all permutations or the configuration de......

技术盛宴
45分钟前
13
0
centos宝塔面板安装及常见错误处理(超级详细)

原文连接:https://www.wjcms.net/archives/centos%E5%AE%9D%E5%A1%94%E9%9D%A2%E6%9D%BF%E5%AE%89%E8%A3%85%E5%8F%8A%E5%B8%B8%E8%A7%81%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86%E8%B6%85%E7%......

神兵小将
今天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部