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

    迭代器

      什么是迭代器?    器:工具  迭代:更新换代,迭代是一个重复的过程,但是每次重复都是基于上一次重复的结果

      为什么要用迭代器?  迭代器指的是迭代取值的工具

           迭代器的优点:1.提供一种不依赖索引的取值方式  2.更节省内存

           迭代器的缺点:1.不如按索引的取值方式灵活 2.取值是一次性的,只能向后next取,无法预测个数

           .iter 是获取自身,目的是保证for循环的规范

            iter_d= iter(d)    res = next(iter_d) 

      如何使用迭代器? 可迭代对象,但凡内置有_iter_方法的对象都称之为可迭代对象  .__iter 除了数字其他都有               strlist upledictset文件对象

              迭代器对象:即内置有_iter_方法,又内置有_next_对象称为都称之为迭代器对象
                                    即可迭代对象下_iter_方法,会有一个返回值,该返回值就是内置的迭代对象

    for循环的底层原理
            1.调用in后面的那个值/对象的_iter_方法,拿到一个迭代器对象iter_obj
            2.调用迭代器对象iter_obj._next_()得到的返回值赋值变量名k,循环往复直到取值完毕抛出异常StopIteration
            3.捕捉异常结束循环      
    生成器:就是一种自定义迭代器
            如何得到生成器:但凡函数内出现yield关键字,再调用函数不会立即执行函数体代码,会得到一个和返回值,这个返回值就是生成器对象
            yield 1.提供一种自定义迭代器的解决方案
                  2.yield &return
                    相同点:都可以返回值,返回值没有类型个数限制
                    不同点:return只能返回一次值,yield却可以让函数暂停在某一个位置,可以返回多次值
        def func():
            print('')
            yield
        print(g=func())
        next(g) 运行代码
    递归调用与二分法:
        1.函数的递归调用
            在调用其他函数的过程中又直接或间接调用该函数本身,称之为递归调用
            递归必须满足两个条件:
                1.没进入下一次递归调用,问题的规模都应该有所减少
                2.递归必须要有一个明确的结束条件
            递归有两个明确阶段:
                1.回溯  一层层调用下去
                2.递推    一层层推回去,推导出结果

    学习,学习,学习! 学习是为了更好的未来,不要让别人瞧不起你,加油!!!
  • 相关阅读:
    js的深拷贝特别注意this的深拷贝
    快速的熟悉一个angular的项目从run看起
    关于angular路由中的#
    AngularJS的Provider, Value, Constant, Service, Factory, Decorator的区别与详解
    css页面缩放
    jquery自定义window事件
    js自定义事件
    git分支
    webpack知识小结--require.context方法
    Vue 创建组件的两种方法
  • 原文地址:https://www.cnblogs.com/yangyufeng/p/10058673.html
Copyright © 2011-2022 走看看