可迭代对象
2021/11/19 23:16:06
本文主要是介绍可迭代对象,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 一:可迭代对象
- 二:迭代器对象
- 三:for循环的本质
一:可迭代对象
1.什么是迭代器? 迭代取值的工具 2.什么是迭代? 迭代既更新换代 每次的更新都必须依赖于上一次的结果 3.可迭代对象内置有__iter__方式的都称之为可迭代对象 内置的意思是可以通过点的方式直接查看到的 ''' 针对双下划线开头 双下划线结尾的方式 最为专业标准的读法为 双下方法名 面向对象的时候为了与隐藏变量区分开 ''' n = 1 while True: n+=1 print(n) l = [11,22,33,44,55,66] n = 0 while n < len(l): print(l[n]) n += 1 i = 12 # 没有 f = 11.11 # 没有 s = 'jason' # 有 l = [111,22,33,4] # 有 d = {'username':'jason','pwd':123} # 有 t = (11,22,33) # 有 se = {11,22,33} # 有 b = True # 没有 file = open(r'a.txt','w',encoding='utf8') 含有__iter__的有 字符串 列表 字典 元组 集合 文件对象 上述通常为可迭代对象 等价于调用了一个内置方法 d.get() print(d) print(d.__iter__()) print(iter(d)) print(d.__len__()) print(len(d)) 可迭代对象调用__iter__方法会变成迭代器对象(老母猪) __iter__方法在调用的时候还有一个简便的写法iter() 一般情况下所有的双下方法都会有一个与之对应的简化版本 方法名()
二:迭代器对象
迭代器对象 即含有__iter__方法 又含有__next__方法 如何生成迭代器对象 让可迭代对象执行__iter__方法 文件对象本身即是可迭代对象又是迭代器对象 迭代器对象无论执行多少次__iter__方法 还是迭代器对象(本身) 迭代器给我们提供了不依赖于索引取值的方式 i = 12 # 没有 f = 11.11 # 没有 s = 'jason' # 有 l = [111,222,333,444] # 有 d = {'username':'jason','pwd':123} # 有 t = (11,22,33) # 有 se = {11,22,33} # 有 b = True # 没有 file = open(r'a.txt','w',encoding='utf8') res = s.__iter__() # 转成迭代器对象 print(res.__next__()) # 迭代器对象执行————next__方法其实就是在迭代取值 (for循环) print(res.__next__()) print(res.__next__()) print(res.__next__()) print(res.__next__()) res = d.__iter__() # 转成迭代器对象 print(res.__next__()) # 迭代器对象执行__next__方法其实就是在迭代取值(for循环) print(res.__next__()) print(res.__next__()) # 取完元素之后再取会"报错" 易错 print(d.__iter__().__next__()) # username print(d.__iter__().__next__()) # username print(d.__iter__().__next__()) # username print(d.__iter__().__next__()) # username print(d.__iter__().__next__()) # username print(d.__iter__().__next__()) # usernam 可迭代对象优缺点? 优点 1.提供了一种新的,统一的取值方式(可以不依赖于索引以及key的) 2.惰性计算,不消耗内存 缺点 1.取值不够灵活 2.一次性的只能往后取,无法预知数据的个数
三:for循环的本质
l1 = [1,2,3,4,5,6,7,8,9,11,22,33,44,55] 循环打印出列表中每个元素 但是不能使用for循环 __next__() next() 1.先将列表转为迭代器对象 res = l1.__iter__() 2.循环执行__next__取值 while True: print(res.__next__()) for i in l1: print(i) ''' for循环内部原理 1.将关键字in后面的数据先调用__iter__方法转为迭代器对象 2.循环执行__next__方法 3.取完之后__next__会报错 但是for循环会自动捕获该错误并处理 res = 数据.__iter__() while True: 检测代码是否会报错 res.__next__() 如果报错了则自动处理掉并结束while循环 '''
这篇关于可迭代对象的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略