关于迭代器的理解

1、列表的简单索引

先让我们看看没有迭代器之前的样子

list1=["猪","马","牛","羊"]

我们现在想做这么一件事情:把list1里所有的元素打印一下,记住,不要用for循环(原因一会儿讲)

print(list1[0],list1[1],list1[2],list1[3])

2、列表变长了怎么挨个索引?

这是我们采用的一种方式,目前来看,并没有什么问题,那让我们把列表拉长,比如里面有100种动物,我们应该如何打印出来?这个时候,我们想到了循环while,因为不能用for。那么,代码就成了下面的样子

i=0
while i<100:
    print(list1[i])
    i+=1

3、不知道列表长度,怎么挨个索引?

进行到这,用while循环似乎还是没什么问题,那让我们进一步思考一种情况,我们知道里面有100个动物,我们可以协商while i<100,如果不知道有多少种呢?如果往大了写,那就很占用运行内存,如果往小了写,又打印不完,怎么办?
这时候,我们就在想,有没有一种东西,让我们在不需要知道里面的动物数量的情况下也能给它全部打印出来,还是不多不少的那种?

4、迭代器的出现

于是迭代器横空出世。
怎么做一个迭代器呢?其实很简单,首先我在这个list类里添加两个方法就可以了,分别是iter()和next(),iter()的目的是告诉外界,我是可迭代的对象,就好比贴出了一张告示。next()的目的显而易见,就是不断读取下一个对象而已。

list1=["猪","马","牛","羊"]
obj=iter(list1)
ret=next(obj)
print(ret)

这个时候,我们就看到各种动物挨着被打印了出来,直到打印完毕退出列表。

5、for循环:被包装好了的迭代器

这个时候,有同学就想到了一个东西:for循环,这不和这个迭代器一样吗?直接用for循环不就可以了吗?我要告诉你的是,for循环就是一个包装好了的迭代器而已。本来其实只有while循环而已,我们下面来用while循环来模拟for循环的运行机制。


list1 = ["猪","马","牛","羊"]
obj = iter(list1) #转换位迭代器
while 1:  # 利用while循环,next进行取值
    try:
        print(next(obj))
    except StopIteration:  # 利用异常处理终止循环
        break  

其他的理解可参考这个博主文章:https://blog.csdn.net/mpu_nice/article/details/107299963

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值