zoukankan      html  css  js  c++  java
  • Python之迭代器

    Python之迭代器

       迭代器的作用:用来做迭代。(我擦,好似废话一般的存在!!!)可以不用for和while循环,遍历数据类型的元素,拿取元素也不需要索引。

       迭代是在描述一个重复的过程。那么问题来了,啥子东西是重复的哩。for and while。

       类似循环一样,将有序数据类型的数据,按索引值,顺序取来,来呀来呀来呀!

       但是呀,重点来了,but。有序数据类型可以用循环来有序的挨个的取出来,可以无序的也想出来,咋办。  

       所以说,亲:迭代器了解下,服务周到,安全可靠。

       迭代器功能的发挥场所:

          用是有前提的。Python解释器为可以被迭代的数据类型,都设了一个 __iter__ 方法。只有有iter方法的数据类型,才可以用。

          有__iter__ 方法的,就叫做可迭代对象。      

    d = {"a":2,"b":8,"l":4,}
    d.__iter__()    #只要有iter方法,就是可以迭代的。    d.__iter__() == iter(d)

          执行d.__iter__ ,是它赋予变量任何,比如H,这个H就是迭代器,亲。

          一旦有了H。就可以在H里用next方法。next,就是下一个嘛。他就可以是迭代器一个一个的出值,听着是不是有点便秘。哈哈哈哈哈。

          但是,next是有限的。你的数据类型里有多少元素,就可以next多少下,超出的话,会报一个超出范围的错。也可以说是一个结束信号的红字提示。

          迭代器提供了一种不依赖索引值取值的方式,这样就可以遍历那些没有索引值的可迭代对象,比如文件,字典,集合。

          

        迭代器,比数据类型要更节省内存。迭代器是每next一下,才出一个值。相比列表什么的,一下子将数据放入内存相比。相当省空间。所以呀。迭代器是惰性计算。

    凡事有利有弊:

      迭代器的缺点是:

        1.在知道要去某一位置的值时,迭代器要先迭代出之前的,才能拿到值。这点就不如列表。

        2.迭代器无法获取长度。无法知道被迭代的对象有多少元素。

        3.迭代器只能一次性的往后取值,无法取上一个值。

    用  from collections import Iterable,Iterator 的两个方法,可以查看可迭代对象和迭代器对象。

    from collections import Iterable,Iterator
    
    s='hello'
    l=[1,2,3]
    t=(1,2,3)
    d={'a':1}
    set1={1,2,3,4}
    f=open('a.txt')
    
    #都是可迭代的
    # s.__iter__()
    # l.__iter__()
    # t.__iter__()
    # d.__iter__()
    # set1.__iter__()
    # f.__iter__()
    # print(isinstance(s,Iterable))
    # print(isinstance(l,Iterable))
    # print(isinstance(t,Iterable))
    # print(isinstance(d,Iterable))
    # print(isinstance(set1,Iterable))
    # print(isinstance(f,Iterable))
    
    #查看是否是迭代器
    print(isinstance(s,Iterator))
    print(isinstance(l,Iterator))
    print(isinstance(t,Iterator))
    print(isinstance(d,Iterator))
    print(isinstance(set1,Iterator))
    print(isinstance(f,Iterator))

      Iterable 是否可迭代   返回布尔值。

      Iterator 是否是迭代器,返回布尔值。

  • 相关阅读:
    怎样去阅读一份php源代码
    Cloudera Hadoop 4系列实战课程(电商业日志流量分析项目)
    ORACLE系列之SQL从入门到精通(全面把控数据库基础)
    jQuery2.0应用开发:SSH框架整合jQuery2.0实战OA办公自动化
    Unity3D游戏引擎实战开发从入门到精通
    中国移动:物联网项目实战开发企业级应用(ssp框架应用、EXTJS4.2、GoogleMap、JPA)
    基于OpenLayers实战地理信息系统(离线地图,通过基站转经纬度,Quartz深入,轨迹实战)
    Android自动化测试从入门到精通
    博客从新开张啦!
    python scrapy版 极客学院爬虫V2
  • 原文地址:https://www.cnblogs.com/george92/p/9040165.html
Copyright © 2011-2022 走看看