1.迭代器1.什么是迭代器?1.迭代器是用于迭代数据的-记录每次访问的数据,以及返回下一个数据-迭代器通过__next__方法取得下一个指向的值2.迭代器也称迭代对象,迭代对象指可以通过for .. in ..等语句将数据内容显示出来的,这样的过程叫迭代,把这个可以提供给我们使用数据的这个对象称为迭代对象,2.常用数据类型的可迭代性有那些?列表,元祖,字典,字符串,set集合等都是可迭代对象3.通过isinstance()来判断一个对象是否是迭代对象4.自己创建一个可容纳多个数据内容的对象是否是可迭代对象呢?事实证明,通过创建可容纳多个数据的对象并不是可迭代对象原因是在这个对象中没有取得迭代器,参考迭代器的本质5.可迭代对象的本质可迭代对象的本质就是提供了一个这样的中间人(迭代器),即迭代器为我们将这些数据遍历出来使用可迭代对象是通过__iter__()魔法方法取得迭代器同时通过__next__魔法方法指向下一个值,也就是通过这个方法把所有的数据一个一个读取出来6.如何自定义一个迭代器1.在类中添加了__iter__方法即取得迭代器,2.在通过__next__方法指出所有的数据,7.__iter__和__next__介绍1.__iter__:iter(iterable) -> iterator  传入的是一个可迭代对象,返回的是迭代器iter(callable, sentinel) -> iterator内部是从可迭代对象的__iter__方法来获得迭代器的2.__next__: next(iterator[, default])Return the next item from the iterator. If default is given and the iteratoris exhausted, it is returned instead of raising StopIteration.传入一个迭代器,返回的是迭代器指向的下一个数内部是通过迭代器__next__方法指向下一个数据的3.for .. in .. 的本质:for item in iterable 循环的本质就是先通过iter()函数获得一个迭代器然后对获得迭代器不断不得调用next()方法来取得下一个值,并赋值给item当遇到Stopiteration的异常后循环结束8.迭代器的应用场景1.用于可迭代的对象数据2.因为迭代器是通过__next__来取得迭代数据的,所以也可以通过这个方法自动生成有规律的数据而不在使用已有的数据集取数,避免内存资源浪费9.注意:迭代器本身也是一个可迭代对象10.参考代码:#自己创建一个可容纳多个数据内容的对象是否是可迭代对象呢?# import collections# class func():#     def __init__(self):#         self.name = []#     def add(self,name):#         self.name.append(name)## #创建对象# s1 = func()# s1.add("aaaa")# s1.add("dddd")# s1.add("vvvv")# s1.add("aaaas")## #是否为可迭代对象:False# print("是否为可迭代对象:%s"%isinstance(s1,collections.Iterable))#自定义可迭代的类import collectionsclass func(object):def __init__(self):self.name = []self.position = 0#这个是记录迭代的位置,默认从第一个开始,初始值为0#取得迭代器def __iter__(self):"""返回一个迭代器"""return selfdef __next__(self):"""返回迭代器下一个指向的值"""if self.position < len(self.name):#判断当前的位置是否跟总的长度相等,item = self.name[self.position]self.position += 1return  itemelse:raise StopIterationdef add(self,name):self.name.append(name)#创建对象s1 = func()s1.add("aaaa")s1.add("dddd")s1.add("vvvv")s1.add("aaaas")#是否为可迭代对象:Trueprint("是否为可迭代对象:%s"%isinstance(s1,collections.Iterable))#这时候遍历对象发现报错,原因是在这个类中没有写__next__方法,这个类只是有了迭代器,# 但并不是很完善for item in s1:print(item)

python3 迭代器(自定义迭代器)相关推荐

  1. python 跳过迭代_Python迭代和解析(4):自定义迭代器

    Python迭代和解析(4):自定义迭代器 发布时间:2019-01-13 17:10, 浏览次数:280 , 标签: Python 解析.迭代和生成系列文章:https://www.cnblogs. ...

  2. Python基础教程:自定义迭代器

    本文介绍如何自定义迭代器,涉及到类的运算符重载,包括__getitem__的索引迭代,以及__iter__.__next__和__contains__,如果不了解这些知识可跳过本文. 索引迭代方式 索 ...

  3. 迭代器自定义遍历对象

    要说起迭代器自定义遍历对象,首页要知道什么是迭代器? 生成器概念在Java,Python等语言中都是具备的,ES6也添加到了JavaScript中.Iterator可以使我们不需要初始化集合,以及索引 ...

  4. 了解 C# foreach 内部语句和使用 yield 实现的自定义迭代器

    在本期专栏中,我将介绍我们在编程时经常用到的 C# 核心构造(即 foreach 语句)的内部工作原理.了解 foreach 内部行为后,便可以探索如何使用 yield 语句实现 foreach 集合 ...

  5. java自定义迭代器作用_Java实现的自定义迭代器功能示例

    本文实例讲述了Java实现的自定义迭代器功能.分享给大家供大家参考,具体如下: 编写自己的Iterator,实现Iterator接口,这里多说一句,实现Iterable后,可以用"forea ...

  6. python3高级 一 迭代器

    迭代器 迭代是访问元素集的一种方式.迭代器是一个可以记住遍历的位置的对象.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 可迭代对象 我们已经知道可以对li ...

  7. Python3 中打的迭代器与生成器

    迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退 ...

  8. 异常捕获与自定义迭代器

    异常捕获 什么是异常 异常是程序运行时导致错误的bug,会导致程序运行终止. 例如在pycharm中,程序报错会输出一段跟错误相关的报告,并标出出错类型和错误代码位置. 异常的类型 NameError ...

  9. python3生成器与迭代器_python3迭代器和生成器 | 吴老二

    迭代函数就是一个利用for...in来完成的一个过程,但是呢?在没说迭代函数之前我们需要了解一下什么是迭代器,什么是生成器,两者的区别是什么,先一个一个的学习. 迭代器 先学习一下什么是迭代器,迭代器 ...

  10. Lua⭐️迭代器pairs、ipairs ; 自定义迭代器

    迭代器pairs.ipairs array={"lua","c#","c"} --pairs可以遍历所有的键值对,即使其中key不连续 fo ...

最新文章

  1. Hive 基本语法操练(四):Hive 复合类型
  2. 求不同字母全排列两种递归模板
  3. 一个不错的CSS DIV布局,DIV高度自适应
  4. php 代码线程,php实现多线程代码
  5. 鸡啄米vc++2010系列11(非模态对话框的创建)
  6. 一些软件设计的原则【转】——本来想自己总结,结果发现个更全的,
  7. java视频流传输_java – 使用Xuggler流式传输视频
  8. [读书笔记]TCP/IP详解V1读书笔记-4 5
  9. GPU Saturday技术沙龙:OpenCL程序员眼中的下一代APU架构
  10. spring学习笔记06-spring整合junit(出现的问题,解决的思路)
  11. 基于Matlab的跨孔CT胖射线追踪算法(二)
  12. SAST算法的学习笔记
  13. 反向传播算法(BP)学习笔记
  14. python列表嵌套字典取值_Python学习100天-Day03(字符串、列表、字典、元组)
  15. 以撒的结合-重生 n项 修改器
  16. 梁宁-产品思维30讲-小米的效率革命
  17. 百度导航怎么不显示服务器,win7系统百度首页导航不见了怎么办
  18. ITRON的任务管理
  19. 谷歌插件开发ajax请求,谷歌扩展程序设置ajax请求容许跨域(极少人知道的解决方案)...
  20. oracle添加删除磁盘,oracle11gR2 ASM添加和删除磁盘

热门文章

  1. Android Multimedia Framework overview(多媒体框架概述)--base on jellybean(一)
  2. Python制作翻译工具(程序员必备中英文翻译工具)
  3. @Validated规则校验和校验分组Group
  4. 2.9.1 Packet Tracer - Basic Switch and End Device Configuration(作业)
  5. springboot+音乐播放小程序 毕业设计-附源码191730
  6. 大小端高位低位字节的理解
  7. jquery选择器空格与大于号、加号与波浪号的区别
  8. 爬取百大弹幕,大家还是喜欢上罗老师的课!
  9. 介绍与评测Intel HLE与RTM技术
  10. 理解boot menu