Python之Iterable(可迭代对象)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python之Iterable(可迭代对象),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2411字,纯文字阅读大概需要4分钟。
内容图文
参考文章:https://www.cnblogs.com/new-rain/p/9991932.html 我觉得写的不错
0、在Python中只要是能用for in的,都是可迭代对象,让我们看下定义
定义:我们已经知道可以对list、tuple、dict、set、str等类型的数据使用for...in...的循环语法,会从其中依次拿到数据元素进行使用,我们把这样的过程称为遍历,也叫迭代。
所以我们把可以通过for...in...这类语句迭代读取一条数据元素供我们使用的---->对象就称之为可迭代对象(Iterable)
1、可迭代对象,可不是必须是支持有下标,比如dict就没有下标的 (支持下标操作的是__getitem__方法)
2、可以使用 isinstance()函数 判断一个对象是否是 Iterable 对象,Itrerable位于collections下
from collections import Iterable(已经废弃,现在使用from collections.abc import Iterable)
isinstance(xx,Iterable)
3、那么可迭代对象到底里面干了什么呢?(原理)迭代器对象出现了!!!
我们分析对可迭代对象进行迭代(遍历)使用的过程,发现每迭代一次(即在for...in...中每循环一次)都会返回对象中的下一条元素,一直向后读取元素,直到迭代了所有元素后才会结束。
那么,在这个迭代过程中就应该有一个“记录员”去记录每次访问到了第几条元素,以便每次迭代都可以返回下一条元素
我们把这个能帮助我们进行数据迭代的“记录员”称为迭代器(Iterator)。可迭代对象的本质就是可以向我们提供一个这样的“记录员”即迭代器对帮助我们对其进行迭代遍历使用
Iterator对象,很重要哦
4、可迭代对象通过__iter__方法向我们提供一个迭代器对象(Iterator),我们在迭代一个可迭代对象的时候,实际上就是先获取该对象提供的一个迭代器对象(Iterator),然后通过这个迭代器来依次获取对象中的每一个元素。
重点:那么也就是说,一个具备了__iter__方法的对象,就是一个可迭代对象
5、我们先写一个例子,其中创建的对象,不是一个可迭代对象
from collections.abc import Iterable
class MyTestIterable(object):
pass
myIterable = MyTestIterable()
print(isinstance(myIterable,Iterable))
输出结果:
False
6、加入 __iter__方法,里面将类创建的实例对象变为了可迭代对象
from collections.abc import Iterable
class MyTestIterable(object):
def __iter__(self):
pass
myIterable = MyTestIterable()
print(isinstance(myIterable,Iterable))
输出结果:
True
7、第5和第6两个例子,充分说明一个具备了__iter__方法的对象,就是一个可迭代对象
8、再思考一下,上面判断可迭代对象的时候,都是传入的某一个类的实例对象,如果我们传递进入一个class对象呢,我这简直就是扩展思考,刚试了一下,不靠谱…………
9、iter()函数与next()函数
在builtins.py模块下,有这两个内置函数哈,牛批
iter()接受一个Iterable对象,返回可迭代对象对应的一个Iterator对象
10、注意一下魔法方法__iter__与iter(),很容易混淆,它们是各自独立的方法哦
内容总结
以上是互联网集市为您收集整理的Python之Iterable(可迭代对象)全部内容,希望文章能够帮你解决Python之Iterable(可迭代对象)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。