迭代器

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__() #总结:
迭代器对象一定是可迭代对象,而可迭代对象不一定是迭代器对象

生成器

  1. 函数中有yield
  2. 生成器内存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)

最新文章

  1. Excel word “由于本机的限制_该操作已被取消_请与管理员联系”的已生效解决办法 (转 )
  2. 基于HT for Web矢量实现3D叶轮旋转
  3. LeetCode 01 Two Sum swift
  4. .net 估计要死在你手里了
  5. South - 在 Django 中 Migrate Database
  6. MOS管应用之放反接电路
  7. 绘制更Smooth的UI
  8. js字面量
  9. 移动端 iphone touchmove滑到边界(浏览器地址拦及以上) touchend失效解决办法
  10. JS怎样将拖拉事件与点击事件分离?
  11. IOS7学习之路八(iOS 禁止屏幕旋转的方法)
  12. Java集合框架梳理(含经典面试题)
  13. Java二维数组的概念和使用方法
  14. 【redis】在dotnet core下的redis的使用
  15. 【Spark篇】---Spark中yarn模式两种提交任务方式
  16. Ubuntu18.04 安装32bit库后出现问题
  17. 第四篇flask中模板语言 jinja2
  18. Maven下载与环境变量配置
  19. python学习之旅(十五)
  20. Android Bitmap操作问题之Canvas: trying to use a recycled bitmap

热门文章

  1. 效率工具 | 快速创建虚拟机,Vagrant真香!
  2. [ABP教程]第二章 图书列表页面
  3. selenium自动化 | 借助百度AI开放平台识别验证码登录职教云
  4. SpringSecurity应用篇
  5. 通用寄存器_MOV_ADD_SUB_AND_OR_NOT
  6. 经常使用的Sublime Text 快捷键
  7. 通过js给某个标签添加内容或者删除标签
  8. .NET Core使用Source Link提高源代码调试体验和生产效率
  9. 目标检测的评价指标(TP、TN、FP、FN、Precision、Recall、IoU、mIoU、AP、mAP)
  10. 飞机大战(1)--添加logo和加载动画