zoukankan      html  css  js  c++  java
  • day13 itertor

    1.迭代器(itertor):

      迭代:迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结     果会作为下一次迭代的初始值。

    2.探究迭代器的工作原理:

      可使用for循环的类型:list,dic,set,turple,f= open(),enumerate

      为什么这些类型可以使用for循环?

      print(dir(类型))  :可以用于查看函数里面存在的方法,即这些类型里面都存在某些相同的方法,而这些方法构成了循环这一功能

      循环的原理:

        循环的原理即调用函数内的方法:可使用双下划线的调用方法  例:print([].__iter__())

      探究是函数内的那些方法构成循环的这一功能?

        可使用交集判断是函数内那些方法(将类型转化为集合,在进行交集运算)

        例:

    ret = set(dir([]))&set(dir({}))&set(dir(''))&set(dir(range(10))))
    print(ret)

      输出结果:

    {'__len__', '__getattribute__', '__str__', '__getitem__', '__lt__', '__gt__', '__ne__', '__new__', '__dir__', '__subclasshook__', '__delattr__', '__eq__', '__iter__', '__ge__', '__reduce_ex__', '__doc__', '__contains__', '__sizeof__', '__class__', '__init__', '__le__', '__hash__', '__format__', '__repr__', '__setattr__', '__reduce__', '__init_subclass__'}
    

      判断类型内是否有某种方法:(下面为探究iter是否在list中,是的话,结果为True)

      

    print('__iter__' in dir([]))

      使用差集分析可得出:

    print(set(dir([].__iter__()))-set(dir([])))

      结果为:

    {'__length_hint__', '__setstate__', '__next__'}

      进而再对函数的方法含义再进行探究:

      例:

     l=[1,2,3]
     itertor = l.__iter__()
     print(itertor.__next__())
     print(itertor.__next__())
     print(itertor.__next__())

      结果为:1

          2

          3

    iterable(可迭代的),itertor(迭代器)

      [].__iter__()   是可迭代的

      [].__next__() 可以将元素一个一个从迭代器中取出

      含有next和iter方法的类型就是一个迭代器

       可以被for循环的都是可迭代的

       可迭代的函数内部一定都有iter方法

       只要是迭代器就一定可迭代

      # for  只有时可迭代对象的时候,才能使用for
      当我们遇到一个新变量的时候,不能判断它是否能forx循环的时候,就胖段它是否迭代
      for i in l :
    pass
      itertor = i.__iter__()
      itertor = i.__next__()
      '''
      #
      '''
      迭代器的好处:
      可以取到容器类型中一个一个的值
      节省内存空间,取一个值,释放一个值
      如果正常使用print(list(range(10000)))将会一次性占用内存
      '''

       

  • 相关阅读:
    “图灵&博客园&互动网有奖书评征集活动——微软技术系列”评选结果
    像优秀的SQL程序员一样思考
    倚天·屠龙——唯我独尊
    CSS与HTML设计模式全集(350余种)
    游览器兼容冲突的常见css
    嵌入多媒体文本
    删除确认代码
    用!important解决IE和Mozilla的布局差别
    四大游览器兼容问题综合实例
    jQuery事件之鼠标事件
  • 原文地址:https://www.cnblogs.com/p-t-m/p/11515720.html
Copyright © 2011-2022 走看看