python--可迭代对象、迭代器和生成器
2024-09-08 04:02:11
迭代器
1.什么是迭代器?
不依赖于索引的取值方式
迭代是一个重复的过程,即每一次重复为一次迭代,并且每次迭代的结果都是下一次迭代的初始值
示例:
str1 = 'abcde'
count = 0
while count<len(str1)
print(str1[count])
count+=1
2.什么是可迭代对象?什么是迭代器对象?
#可迭代对象指的是内置有.__iter__方法的对象
'world'.__iter__
(4,5,6).__iter__
[1,2,3].__iter__
{'a':1}.__iter__
{'a','b'}.__iter__
open('a.txt').__iter__
#什么是迭代器对象?
可迭代对象执行obj.__iter__()得到的结果就是迭代器对象
而迭代器对象指的是即内置有__iter__又内置有__next__方法的对象
#文件类型是迭代器对象
open('a.txt').__iter__()
open('a.txt').__next__()
#总结:
迭代器对象一定是可迭代对象,而可迭代对象不一定是迭代器对象
生成器
- 函数中有yield
- 生成器内存id变为:例 <generator object Myread at 0x0000005BBF31F728>
生成器的应用
#将文件中的一行内容以指定的分隔符,分行打印,不用同时加载整行内容,节省内存
def back (f,splitter):
str = ''
while True:
while splitter in str:
num = str.index(splitter)
yield str[:num]
str = str[num+len(splitter):]
newread = f.read(100)
if not newread:
yield str
break
str = str + newread
with open(r'D:\untitled\a.txt','r') as f:
for i in back(f,splitter = '|'):
print(i)
最新文章
- Excel word “由于本机的限制_该操作已被取消_请与管理员联系”的已生效解决办法 (转 )
- 基于HT for Web矢量实现3D叶轮旋转
- LeetCode 01 Two Sum swift
- .net 估计要死在你手里了
- South - 在 Django 中 Migrate Database
- MOS管应用之放反接电路
- 绘制更Smooth的UI
- js字面量
- 移动端 iphone touchmove滑到边界(浏览器地址拦及以上) touchend失效解决办法
- JS怎样将拖拉事件与点击事件分离?
- IOS7学习之路八(iOS 禁止屏幕旋转的方法)
- Java集合框架梳理(含经典面试题)
- Java二维数组的概念和使用方法
- 【redis】在dotnet core下的redis的使用
- 【Spark篇】---Spark中yarn模式两种提交任务方式
- Ubuntu18.04 安装32bit库后出现问题
- 第四篇flask中模板语言 jinja2
- Maven下载与环境变量配置
- python学习之旅(十五)
- Android Bitmap操作问题之Canvas: trying to use a recycled bitmap
热门文章
- 效率工具 | 快速创建虚拟机,Vagrant真香!
- [ABP教程]第二章 图书列表页面
- selenium自动化 | 借助百度AI开放平台识别验证码登录职教云
- SpringSecurity应用篇
- 通用寄存器_MOV_ADD_SUB_AND_OR_NOT
- 经常使用的Sublime Text 快捷键
- 通过js给某个标签添加内容或者删除标签
- .NET Core使用Source Link提高源代码调试体验和生产效率
- 目标检测的评价指标(TP、TN、FP、FN、Precision、Recall、IoU、mIoU、AP、mAP)
- 飞机大战(1)--添加logo和加载动画