88.迭代器协议
迭代(iterate)意味着重复多次,就像循环一样。
举例:实现一个斐波那契的迭代器并且输出大于100的斐波那契数:

 class Fibs:def __init__(self):self.a=0self.b=1def __next__(self):self.a,self.b=self.b,self.a+self.breturn self.adef __iter__(self):return  self
输出:>>> fibs=Fibs()>>> for i in fibs:if i>100:print(i)break144
 结论:方法__iter__返回一个迭代器,包含方法__next__的对象,而调用这个方法时可不提供任何参数。当你调用方法__next__时,迭代器应返回其下一个值。如果迭代器没有可供返回             的值,应引发StopIteration异常。还可以通过内置函数iter获得一个迭代器:
   >>> it=iter([1,2,3,4,5])>>> next(it)#获得下一个元素1>>> next(it)2>>> next(it)3

从迭代器创建序列
其中除了对迭代器和可迭代对象进行迭代之外,还可以将它们转换为序列。使用构造函数list显示地将迭代器转换为列表。

  class IestIterator:value=0def __next__(self):self.value+=1if self.value>10:raise StopIterationreturn self.valuedef __iter__(self):return self输出:>>> it=IestIterator()>>> list(it)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]--------------------------------------------------------------------------------------

关于学习Python的一点学习总结(49->迭代协议及迭代器的创建)相关推荐

  1. 关于学习Python的一点学习总结(57->正则表达式及re模块中的一些函数)

    关于这个正则表达式,我本人也是有点不完全懂,还在继续学习中. 97.re 1.正则表达式: 1.通配符:正则表达式可与多个字符串匹配,可使用特殊字符来创建这种正则表达式 例如:正则表达式'.ython ...

  2. 关于学习Python的一点学习总结(54->集合->堆->双端队列)

    集合,堆,双端队列 再谈集合set:集合是由内置类set实现的 >>> set(range(10)){0, 1, 2, 3, 4, 5, 6, 7, 8, 9} 可使用序列(或其他可 ...

  3. 关于学习Python的一点学习总结(58->匹配对象和编组)

    匹配对象和编组 1.模块re中,查找与模式匹配的子串的函数都在找到时返回MatchObject对象.这种对象包 含与模式匹配的子串的信息,还包含模式的哪部分与子串的哪部分匹配的信息.这些子串部分称 为 ...

  4. 关于学习Python的一点学习总结(52->模块就是程序)

    91.模块就是程序 # hello.py print("Hello, world!") 将其保存在文件hello.py中,这个文件的名称(不包括扩展名.py)将成为模块的名称.这个 ...

  5. 关于学习Python的一点学习总结(47->静态方法和类方法)

    86.静态方法和类方法:静态方法和类方法是这样创建的:将它们分别包装在staticmethod和classmethod类的对象中.静态方法的定义中没有参数self,可直接通过类来调用.类方法的定义中包 ...

  6. 关于学习Python的一点学习总结(41->相关的BIF操作)

    81.一些相关的BIF 1.>>> class BIF:def __init__(self,t):self.t=thasattr(object,name):判断name是否在obje ...

  7. 关于学习Python的一点学习总结(38)

    78.文件: 1.文件的类型:包括ASCII,MIME,.txt等格式. 2.文件的格式类型:(1).MPEG视频:mp4;(2).图片格式:.jpg:(3)powerpoint文档:.ppt; (4 ...

  8. 关于学习Python的一点学习总结(35->关联超类)

    76.调用为关联的超类(继承的类)构造函数 先举个例子: class Bird: def __init__(self): self.hungry = True def eat(self): if se ...

  9. 关于学习Python的一点学习总结(30->递归实例)

    68.递归 先来两个例子: 1.阶乘 def Fact(num):result=numfor i in range(1,num):result*=ireturn result>>> ...

  10. 关于学习Python的一点学习总结(25->pass占位符)

    60.1.什么都不做:pass-可用作为占位符,当你写的某一块程序什么都不做的时候,可以添加这个 pass,不然程序会无法执行. 2.del:Python中的垃圾收集器 先看一段代码: >> ...

最新文章

  1. 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( 初始化压缩对象 | 打开文件 | 设置压缩参数 | 写入压缩图像数据 | 完成压缩 | 释放资源 )
  2. 受损虚拟机的修复方法
  3. 怎么真正入行Web前端行业?JavaScript五大新特性是什么?
  4. 关于区块链的一些思绪
  5. linux内存使用率如何查看,linux内存使用率 linux查看内存
  6. 各种SKYPE网页代码,SKYPE在线代码
  7. P2P加速系统解决方案
  8. Android 修改AlertDialog原生setPositiveButton的字体颜色背景颜色大小边距位置
  9. Ansible主机清单inventory
  10. 老少恋中的愉悦和不安
  11. 路由器的基本配置命令
  12. Django新建项目(Linux操作系统)
  13. JavaScript小练习-计算银行卡余额案例
  14. android用什么字体,关于 Android 默认字体以及对比微软雅黑字体
  15. Apache Calcite 论文翻译
  16. 数学问题:1000瓶酒找1毒酒
  17. openxml操作word的基本应用
  18. 葛洲坝地产的“5G科技”演化:三大维度推进,不唯技术控
  19. 从黑天鹅事件到墨菲定律
  20. MediaPlayer源码流程简要分析

热门文章

  1. Django博客系统(首页分类数据展示)
  2. 规格表管理之删除规格表数据
  3. Numpy中数组间运算
  4. cvelist.jsp
  5. MATLAB_size()和find(),有什么区别?
  6. 为什么python对空格,缩进要求这么高?缩进稍微不对就报错!
  7. 最全 Neo4j 可视化图形数据库的工具!
  8. 利用OpenCV+ConvNets检测几何图形
  9. 导师:学AI的不懂计算机视觉,那你别学了
  10. 在OpenCV中基于深度学习的边缘检测