zoukankan      html  css  js  c++  java
  • python中迭代器和iter()函数

    迭代器是在版本2.2被加入到python的,它为类序列对象提供了一个类序列的接口。python的迭代无缝地支持序列对象,而且它还允许程序员迭代非序列类型,包括用户定义的对象。
        迭代器用起来很灵巧,你可以迭代不是序列但表现处序列行为的对象,例如字典的键、一个文件的行,等等。当你使用循环迭代一个对象条目时,你几乎分辨不出它是迭代器还是序列。你不必去关注这些,因为python让它像一个序列那样操作。
     
        迭代器的作用如下:
    • 提供了刻扩展的迭代器接口;
    • 列表迭代带来了性能上的增强;
    • 字典迭代中性能提升;
    • 创建真正的迭代接口,而不是原来的随即对象访问;
    • 与所有已经存在的用户定义的类以及扩展得模拟序列和映射的对象向后兼容;
    • 迭代非序列集合(例如映射和文件)时,可以创建更简洁可读的代码。
    举个例子:
     
    >>> a = [111,221,333]
    >>> b = iter(a)
    >>> b.next()
    111
    >>> b.next()
    221
    >>> b.next()
    333
    >>> b.next()
     
    Traceback (most recent call last):
      File "<pyshell#25>", line 1, in <module>
        b.next()
    StopIteration
     
    next(...)会一直执行下去,当没有了会报错,所以需要判断list的长度。
     
    iter的方法:
     
    >>> help(b)
    Help on listiterator object:
     
    class listiterator(object)
     |  Methods defined here:
     |       
     |  __getattribute__(...)
     |      x.__getattribute__('name') <==> x.name
     | 
     |  __iter__(...)
     |      x.__iter__() <==> iter(x)
     | 
     |  __length_hint__(...)
     |      Private method returning an estimate of len(list(it)).
     | 
     |  next(...)
     |      x.next() -> the next value, or raise StopIteration
     
    其中:__length_hint__(...)是iter的长度;next(...)是listiterrator的下一个指标。
    #分别类似于java中的,hasnext(...)方法和next(...)方法。
     
    >>> for i in range(b.__length_hint__()):
        print(b.next())
     
     
    1
    2
    3
    43
    4
  • 相关阅读:
    文档数据库 海量文本分析 搜索引擎 NoSql 数据库 NewSql 数据库 图数据库 知识图谱 联想 白盒人工智能
    我发起了 一个 桌面程序 窗体界面 开源项目 WinFormXml
    调幅 是 电子技术, 调频 是 量子技术
    出一道题 : 证明 超外差收音机 的 混频原理
    研究一下 容器 的 原理
    设计 一个 CPU 的 存储管理部件
    我发起了 一个 操作系统 开源项目, 名字待定
    ServerFul 架构
    谈谈 ServerFul 架构
    状态机 控制机 任务机
  • 原文地址:https://www.cnblogs.com/q2z2012/p/5997333.html
Copyright © 2011-2022 走看看