加入收藏 | 设为首页 | 会员中心 | 我要投稿 阜阳站长网 (https://www.0558zz.com/)- 科技、建站、内容创作、云计算、网络安全!
当前位置: 首页 > 编程开发 > Python > 正文

可迭代对象、迭代器与生成器

发布时间:2020-07-16 12:35:26 所属栏目:Python 来源:互联网
导读:迭代器 什么是迭代器 迭代指的是一个重复的过程,且不是单纯的重复,每次重复都基于上次的结果。 迭代器指的是迭代取值的工具,该工具的特点是可以不依赖于索引取值。 为什么用迭代器 为了找出一种通用的可以

<h1 id="迭代器">迭代器

什么是迭代器 迭代指的是一个重复的过程,且不是单纯的重复,每次重复都基于上次的结果。 迭代器指的是迭代取值的工具,该工具的特点是可以不依赖于索引取值。为什么用迭代器 为了找出一种通用的&可以不依赖于索引的迭代取值方式。如何用迭代器 可迭代的对象:但凡内置有__iter__方法得当对象都称之为可迭代的对象 迭代器对象:既内置有__iter__,又内置__next__方法 关于__iter__方法:

  1. 调用可迭代对象的__iter__会得到一个迭代器对象
  2. 调用迭代器对象的__iter__会得到迭代器本身

迭代器的优缺点有点

  1. 提供了一种通用的&可以不依赖于索引的迭代取值方式
  2. 同一时刻在内存中只有一个值,更加节省内存缺点
  3. 取指定值时不如索引灵活,并且迭代器是一次性的,只能往前取值
  4. 无法预知迭代器数据的个数

可迭代的对象 str、list、tuple、dict、set、文件对象迭代器对象 文件对象是python定义好的迭代器对象

调用可迭代对象内置的__iter__方法会得到一个返回值,该返回值就是对应的迭代器对象

for循环准确的说应该是迭代器循环,原理如下:

  1. 先调用in后面可迭代对象的__iter__方法,得到迭代器对象
  2. 执行迭代器的__next__方法得到一个返回值,赋值给每次循环的变量,运行循环体代码
  3. 循环往复,直到迭代器取值完毕抛出异常然后捕捉异常结束循环

    定义一个迭代器必须要有yield关键字 在函数内但凡包含有yield关键字,运行到yield时,会暂停运行并会得到一个返回值,该返回值成为生成器对象,生成器本质就是迭代器yield

  4. 提供一种自定义迭代器的解决方案
  5. yield可用于返回值yield和return的异同 相同点:都可以用于返回值 不同点:yield可以暂停函数,yield可以返回多个值,而return只能返回一次值且会终止函数的运行。一个自定义的生成器
def my_range(start,stop,step=1):
    while start

(编辑:阜阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读