python-迭代器

迭代器(Iterator)

一、什么是迭代器

1、迭代是访问集合中元素的一种方式,迭代器可以记住遍历位置的对象,每当使用其中数据的时候,每次从数据流中取出一个数据,直到数据被取完为止,迭代器只能往前不会后退。【那从这里就看出,一个迭代器具有两个因素:一是迭代一次可返回一个元素,二是可以自动的被迭代,也就是向下走】

–从表面上看,迭代器是一个数据流对象或者是一个容器,每当使用其中数据的时候,每次从数据流中取出一个数据,直到数据被取完为止,而且这些数据不会被重复使用。

–从编码的角度看,迭代器是一种实现了python迭代器协议方法的对象。

python中迭代器协议方法主要有两个:

​ iter():返回对象本身

​ next():返回容器中下一个元素或数据。当时用完迭代器中数据时,会引发stopiteration

故在python中只要有类具有上述两种方法,那么这个类就是可迭代的,即这个类是迭代器。我们可以用for来遍历它

二、可迭代对象VS迭代器

1、可迭代对象 不等于迭代器

iterable: 可迭代对象,属于python的名词,本质上就是含有__iter__`方法的对象。

python这种学过的可迭代对象iterable

1、序列:字符串、列表、元组

2、非序列:字典、文件

iterator: 迭代器,也属于python的名词,只能迭代一次。需要满足如下的迭代器协议

  • 定义了__iter__方法
  • 定义了__next__方法。用来返回下一个值,并且当没有数据了,抛出StopIteration

即迭代器需要实现了__next__方法,使用next(data)来依次产出数据(像生孩子一样,next一下生一个,如果没有数据了,就会产生异常。),可迭代对象只是实现了__iter__方法。因此如果你需要迭代器能够迭代自身,就需要同时实现___iter___方法,和__next__方法**(用inter返回元素,用next向下走)**

因此:

即:一个实现了iter方法的对象是可迭代的对象,一个实现next方法并且是可迭代的对象是迭代器。可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。

itertion: 就是迭代,一个接一个(one after another),是一个通用的概念,比如一个循环遍历某个数组。

2、 迭代器不要求你事先准备好整个迭代过程中所有的元素。仅仅是在迭代至某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合。

3、很多时候使用迭代器完成的工作使用列表也可以完成,但是如果有很多值列表就会占用太多的内存,

其中:那for循环本质即 先调用iter()把Iterable变成Iterator在进行循环迭代的。

即for循环内部做了3件事情:

  1. 调用iter()把可迭代对象转换成迭代器

  2. 不断的调用迭代器的next()方法

  3. 处理StopIteration异常,结束循环

class Use:

    def __init__(self,x=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值