• 迭代器


       先来看看怎么创建迭代器(字符串,列表或元组对象都可用于创建迭代器,文章中只展示列表的迭代器创建):

       

       可以看到,iter()方法用来创建迭代器,next()方法用来逐项遍历对象中的元素,且从第一项开始,直到遍历不到元素为止(不能反复,如果想重新遍历,只能重复步骤).

       那么,如果遍历不到元素,迭代器会怎么工作呢?

       

       继续执行:

       

       会发现,代码执行出现错误,提示StopIteration(停止迭代),此时迭代也随之停止。是不是有那么一瞬间觉得似曾相识,对了,for循环(迭代器当然也可以使用for循环来遍历内部元素)!

       整套迭代器的运行机制和for循环如出一辙,下面我用一段代码来展示for循环内部的运行流程吧。

       

       使用while循环作为手段,来遍历列表中的元素,当遍历为空时,抛出异常(StopIteration),执行break,退出程序。

       结合以上介绍,来总结一下迭代器的特点吧。

       * 节省内存,只能一行一行的拿出元素,节约了遍历不需要的值所需要的内存空间(迭代器中体现的不是很明显)。

       * 惰性机制,只有在访问它时,才会返回值。

       * 只能由上至下取值,不能反复。

       简要的概括介绍了下迭代器,作为python中功能很强大的一种访问对象内部元素的方法,需要好好把握其精髓,对于后面高阶内容的学习也会很有帮助。

  • 相关阅读:
    poj2187 Beauty Contest 旋转卡壳
    2017/8/6 考试吐槽
    bzoj2618 凸多边形 半平面交
    cogs1600 奶牛冰壶 计算几何
    cogs896 圈奶牛 凸包
    cogs1743 忠诚 zkw
    BZOJ 3224 普通平衡树 平衡树的两种姿势:SBT,splay。01trie
    BZOJ 3196 二逼平衡树
    BZOJ 1901 Dynamic Rankings
    BZOJ 4325[NOIP2015]斗地主
  • 原文地址:https://www.cnblogs.com/Earth-SmaThing/p/10110736.html
Copyright © 2020-2023  润新知