Python——迭代器详解(全是干货)

学习目标

  • 学习迭代器是为了学习生成器,学习生成器是为了学习协程,协程就是实现多任务的一种方式

  • 知道什么是可迭代对象,能够使用isinstance检测对象是否可迭代

  • 知道使用iter函数可以获取可迭代对象的迭代器

  • 知道使用next函数可以获得迭代器数据

1. 可迭代对象

(1)迭代的意思就是遍历的意思,所以可迭代即为可遍历

(2)常见的可遍历的对象:列表List,元组tuple,字符串,字典,range

(3)一般不可遍历的对象:数字、和自定义myclass(默认)

(4)myclass对象所属的类MyClass如果包含了__ iter __ 方法,此时,myclass就为一个可迭代对象

(5)可迭代对象的本质:对象所属的类中包含了__ iter__方法,其中__ iter__方法就是一个迭代器,即包含了迭代器的对象都是可迭代对象

(6)检测一个对象是否可以迭代,用isinstance(待检测对象,Iterable)

1.1 可迭代对象的检测

使用isinstance(待检测对象,Iterable),用来验证待检测对象是否为Iterable的类或子类的对象

"""
isinstance(待检测对象,Iterable) 
返回True,则为可迭代,False为不可迭代
"""

print(isinstance([1,2,3],Iterable)) # True

1.2 什么是迭代器

我们分析对可迭代对象进行迭代使用的过程中,发现每迭代一次(即在for…in…中每循环一次)都会返回对象中的下一条数据,一直向后读数据直到迭代了所有数据后结束。那么在这个过程中就应该由一个”人“去记录每次访问到了第几条数据,以便每次迭代都可以返回下一条数据。我们把这个能帮助我们进行数据迭代的”人“称为迭代器

可迭代对象通过__ iter __方法向我们提供一个迭代器,我们在迭代一个可迭代对象时,实际上就是先获取该对象提供的一个迭代器,然后通过这个迭代器来一次获取对象中的每一条数据

如何获取可迭代对象的迭代器

iter(可迭代对象) # 返回一个该可迭代对象的迭代器

如何使用迭代器获取下一个元素

next(迭代器) # 使用迭代器来获取下一个元素

1.3 迭代器的特点

(1)记录遍历的位置
(2)提供下一个元素的值(配合next()函数)

1.4 for循环的本质

(1)通过iter(可迭代对象)获取要遍历的对象的迭代器
(2)next(迭代器)获取下一个元素
(3)帮我们捕获了StopIteration异常

1.5 自定义可迭代类

类需要满足以下要求:
(1)有__ iter __ 函数
(2)有__ next __ 函数
(3)此时,该类的对象既是迭代器又是可迭代对象
在这里插入图片描述

  • 19
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

InceptionZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值