python 迭代器
# 迭代: 当前执行依赖于上一次执行结果,
可迭代对象
内置了__iter__()方法的,就是可迭代对象
基本数据类型中,属于可迭代对象的有:字典、列表、元组、集合、字符串、文件对象。
迭代器对象:#打印类型是iterator
可迭代对象调用__iter__()方法,返回值就是迭代器对象。
迭代器对象调用__iter__()方法,返回依然是自己
迭代器对象.__iter__().__iter__().__iter__() 等价与 迭代器对象.__iter__()
(很重要,文件对象可以实现for循环的原理就是这个。)
迭代器对象的特点
迭代器对象有两个方法: __iter__()方法和 __next__()方法。
迭代器是一种节省空间的数据类型,可以被for循环,但是不会占用太大的内存空间。举例 range(10)
迭代器不依赖于索引取值。。
既是可迭代对象又是迭代器对象的, 就是文件类型。
迭代器取值:
(1)迭代器调用__next__()方法,依赖于前边的执行次数,每次会获得一个值。如果取完了,就会报错。
内置方法的简写:对象.__方法名__(),可以简写为 方法名(对象), 很多方法都可以,但不是全部,
‘abc’.__iter__()方法 等价与 iter('abc')
'abc'.__iter__().__next__() 等价与 next('abc'.__iter__())
for循环内部原理:
以列表为例:
ll =[1,2,3,4]
llIter = ll.__iter__()
while True:
try:
llIter.__next__()
except Exception:
break
for i in ll 这句话就是先对ll调用__iter__(), 从可迭代对象变成迭代器对象,然后使用while True循环调用__next__()方法,直到程序异常报错,
文件类型既是可迭代对象也是迭代器对象,底层调用__iter__()方法,返回的依然是自己。因此文件类型是支持for循环的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix