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)))将会一次性占用内存
      '''

       

  • 相关阅读:
    [Web 前端] CSS 盒子模型,绝对定位和相对定位
    [Android Pro] 跨平台反编译工具 jadx (ubuntu亲测 可用)
    [Web 前端] Jquery 复制元素,并修改属性, 追加到另一个元素后面
    [Web 前端 ] Jquery attr()方法 获取或修改 对象的属性值
    [Web 前端] Jquery实现可直接编辑的表格
    [Web 前端] td长度固定,内容过长,超过部分用省略号代替
    [Network] okhttp3与旧版本okhttp的区别分析
    [Android Pro] AndroidStudio IDE界面插件开发(进阶篇之Editor)
    graph embedding 使用方法
    win10 'make' 不是内部或外部命令
  • 原文地址:https://www.cnblogs.com/p-t-m/p/11515720.html
Copyright © 2011-2022 走看看