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.递推    一层层推回去,推导出结果

    学习,学习,学习! 学习是为了更好的未来,不要让别人瞧不起你,加油!!!
  • 相关阅读:
    饿了么P7级前端工程师进入大厂的面试经验
    前端程序员面试的坑,简历写上这一条信息会被虐死!
    这次来分享前端的九条bug吧
    移动端开发必会出现的问题和解决方案
    创建一个dynamics 365 CRM online plugin (八)
    创建一个dynamics 365 CRM online plugin (七)
    创建一个dynamics 365 CRM online plugin (六)
    创建一个dynamics 365 CRM online plugin (五)
    使用User Primary Email作为GUID的问题
    怎样Debug Dynamics 365 CRM Plugin
  • 原文地址:https://www.cnblogs.com/yangyufeng/p/10058673.html
Copyright © 2011-2022 走看看