迭代器用于遍历容器中的数据,但它不是容器,它是一个实现了__next__方法的对象

与迭代器相关的内置函数:

iter(): 将一个对象转换成一个迭代器

next(): 访问迭代器中的下一个变量,直到无可用变量,则抛出StopIteration异常

>>>string = 'demi'
>>>name = iter(string)
>>>next(name)
'd'
>>>next(name)
'e'
>>>for each in range(5):
    print(each)
以上for语句等同于下面的代码:

>>>each = iter(range(5))
>>>while True:
  try:
    print(next(each))
  except StopIteration:
    break

与迭代器相关的魔法方法:

__iter__(self): 返回迭代器本身

__next__(self): 决定迭代器的方法

>>>class Fibs:
  def __init__(self,n = 10):
    self.a = 0
    self.b = 1
    self.n = n
  def __iter__(self):
    return self
  def __next__(self):
    self.a,self.b = self.b,self.a + self.b
    if self.a > self.n:
      raise StopIteration
    return self.a

Python笔记(二十八)_魔法方法_迭代器的更多相关文章

  1. Python笔记(二十六)_魔法方法_属性的魔法方法

    属性的魔法方法 __getattribute__(self,name):当该类的属性被访问时,自动触发,是最先被触发的属性方法 __setattr__(self,name,value):当一个属性被设 ...

  2. Python笔记(二十三)_魔法方法_字符串的魔法方法

    __str__和__repr__ 如果要把一个类的实例变成字符串,就需要实现魔法方法__str__()和__repr__ >>>class A: def name(self): re ...

  3. Python笔记(二十四)_魔法方法_运算符的魔法方法

    算数运算方法 .反运算方法 以对象A+对象B为例,都是将A作为self值,而B作为other值传入__add__(self,other)方法: 当用户输入A+B,就会调用重写的add方法: >& ...

  4. Python笔记(二十二)_魔法方法_基本魔法方法

    __init__(self[,...]) __init__和__new__组成python的构造器,但__init__更多的是负责初始化操作,相当于一个项目中的配置文件,__new__才是真正的构造函 ...

  5. Python笔记(二十五)_魔法方法_描述符

    描述符的属性方法 __get__(self, instance, owner): 用于访问属性,返回属性的值 __set__(self, instance, value): 用于给属性赋值时,返回属性 ...

  6. Python笔记(二十七)_魔法方法_容器

    定制容器 容器类型的协议: 定制不可变容器,只需要定义__len__()和__getitem__()方法 定制可变容器,需要定义__len__().__getitem__().__setitem__( ...

  7. Python笔记(二十)_多态、组合

    多态 对于函数中的变量,我们只需要知道它这个变量是什么类,无需确切地知道它的子类型,就可以放心地调用类的方法,而具体调用的这个方法是作用在父类对象还是子类对象上,由运行时该对象的确切类型决定,这就是多 ...

  8. angular学习笔记(二十八-附1)-$resource中的资源的方法

    通过$resource获取到的资源,或者是通过$resource实例化的资源,资源本身就拥有了一些方法,$save,$delete,$remove,可以直接调用来保存该资源: 比如有一个$resour ...

  9. Python笔记(二十九)_模块

    模块 在Python中,一个.py文件就是一个模块 if __name__ == '__main__':所有模块都有一个 __name__ 属性,__name__ 的值取决于如何应用模块 run当前文 ...

随机推荐

  1. MySql二进制版安装教程

    1.检查是否已安装过mariadb,若有便删除(linux系统自带的) [root@localhost /]# rpm -qa | grep mariadb [root@localhost /]# r ...

  2. Docker 启动与停止容器

    启动已运行过的容器 docker start 容器名称|容器id 如: docker start mycentos 启动所有运行过的容器(注意:反单引号` `), docker ps -a -q 是查 ...

  3. Xor Sum 2 AtCoder - 4142 (异或前缀和性质+ 双指针)

    Problem Statement There is an integer sequence A of length N. Find the number of the pairs of intege ...

  4. MYSQL数据导出与导入,secure_file_priv参数设置

    https://www.imooc.com/article/41883 MySQL 报错 [Code: 1290, SQL State: HY000]  The MySQL server is run ...

  5. linux服务器安全配置攻略

    引言: 最小的权限+最少的服务=最大的安全 所以,无论是配置任何服务器,我们都必须把不用的服务关闭.把系统权限设置到最小话,这样才能保证服务器最大的安全.下面是CentOS服务器安全设置,供大家参考. ...

  6. 【CF487E】Tourists

    洛谷链接 题意 给定一张无向图,点有点权,多次询问两点之间路径上点权最小的点的可能的最小值,支持修改点权. Sol 一棵树就很简单 , 于是我们考虑点双(环)上的情况 , 直观想法就是缩完点双后一个点 ...

  7. 粘性固定 position:sticky

    在研究rem布局时,无意中看到网易新闻移动端首页的导航栏用上了一个CSS 3的属性粘性定位position:sticky,它是相对定位(position:relative)和固定定位(position ...

  8. 【NOIP2016提高A组8.12】礼物

    题目 夏川的生日就要到了.作为夏川形式上的男朋友,季堂打算给夏川买一些生日礼物. 商店里一共有种礼物.夏川每得到一种礼物,就会获得相应喜悦值Wi(每种礼物的喜悦值不能重复获得). 每次,店员会按照一定 ...

  9. POI拆分单元格,并设置拆分后第一个cell的值为空cell的值

    // 从第A7开始,拆分单元格 CellReference ref = new CellReference("A7"); //遍历sheet中的所有的合并区域 for (int i ...

  10. JSON提取器

    如果返回的数据是JSON格式的,我们可以用JSON提取器来提取需要的字段,这样更简单一点 Variable names:保存的变量名,后面使用${Variable names}引用 JSON Path ...