04_07、迭代器
一、可迭代对象
1、迭代
每次更新换代,都依赖于上一次的结果
2、可迭代对象
凡是内置有.__iter__()方法的都是可迭代对象
内置的意思是可以通过点(.)出来
其中:
整型、浮点型、布尔 不是可迭代对象
字符串、列表、字典、元组、集合、文件 是可迭代对象
3、查看是否是可迭代对象的方法
查看数据类型是否是可迭代对象
print(c.__iter__())
print(h.__iter__())
print(d.__iter__())
迭代器(iter)的简便写法
print(iter(c))
print(iter(h))
print(iter(d))
补充:所有__开头的方法都有一个简单的方法
函数名()
eg:
c.__len__()的简单写法就是len(c)
二、迭代器对象
1、什么是迭代器对象
内置有__iter__(),并且也要拥有__next__方法的才是迭代器对象
2、如何生成迭代器对象
让可迭代对象调用__next__()
c = 'hello' # 是 d = [1, 2, 3, 4] # 是 f = (1, 2, 3, 4) # 是 h = {'username': 'ly'} # 是 i = {1, 2, 3, 4} # 是 # 文件对象本省就是可迭代对象和迭代器对象 k = open('a.txt', 'w', encoding='utf-8') # 是 res = c.__iter__() res.__next__() # 迭代器对象 res2 = d.__iter__() res2.__next__() # 迭代器对象
3、迭代器对象的作用
提供了一种不依赖于索引取值的方式
通过__next__遍历每一个元素
4、迭代器的两个易错点
1:对应一个可迭代对象,可以连续多次__iter__(),得到的结果还是本身
2:可迭代对象在不被赋值的情况下,永远为第一个元素
三、for循环内部原理
l = [1, 2, 3, 4, 5] ''' python中有两个循环,while循环和for循环 如果用while循环 + __next__打印出l中的每一个元素 会报错 因为迭代器对象超出范围 res = l.__iter__() while True: print(res.__next__()) ''' # while循环报错解决方式 res = l.__iter__() while True: # 检测的代码 print(res.__next__()) # 如果有错,处理掉 ''' 理论上用for循环打印也会因为相同原因报错 for i in l: print(i) 之所以完美运行的原因就在于,for内部自定帮你把异常处理了 for循环的原理: 1. 先把in后面的可迭代对象__iter__() 2. 调用__next__取值 3. 当值取完之后,for内部自定帮你把异常处理了 '''
四、异常捕获
1、程序中什么是异常
异常就是错误发生的信号,如果不对该信号做处理,那么,之后的代码都不能正常执行
2、异常的分类
语法错误
如:print(123
不允许出现,出现之后,立马修改
逻辑错误
如:l = [1, 2, 3]
print(l[5])
逻辑错误允许出现
但是,一般情况,逻辑错误要修改到尽量完美
3、异常的三大部分
4、如何解决异常原因
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通