zoukankan      html  css  js  c++  java
  • 迭代器与生成器

    1.什么是迭代器

    迭代器是Python最强大的功能之一,是访问集合元素的一种方式

    迭代器是一个可以记住遍历的位置的对象

    迭代器有两个基本的方法iter()和next()

    StopIteration异常用于标识迭代的完成,防止出现无限循环的情况

    什么是迭代?

      迭代是一个重复的过程,但是每次重复都是基于上一次重复的结果而继续

      迭代器是迭代取值的工具

    2.为什么要用迭代器?

    迭代器:优点:1,提供一种不依赖索引的迭代取值方式

          2.更节省内存

        缺点:1.不如索引的取值方式灵活

          2.取值是一次性的,只能往后取,无法预测值的个数

    3.如何用迭代器?

    可迭代的对象:有str list tuple dict set文件对象

    但凡内置有__iter__方法的对象都称之为可迭代对象

    迭代器对象:文件对象

    既内置有__iter__方法又内置有__next__方法的对象都称之为迭代器对象

    调用可迭代对象下__iter__方法,会有一个返回值,该返回值就是内置的迭代器对象

    for 循环的底层原理

    1.调用in后面的那个值/对象的__iter__方法,拿到一个迭代器对象iter_obj

    2.调用迭代器对象iter_obj__next__()将得到的返回值赋值变量名k,循环往复直到取值完毕

    3.捕捉异常结束循环

    2.生成器就是一种自定义的迭代器

    如何得到生成器?

    但凡函数内出现yield关键字,再去调用函数不会立即执行函数体代码,会得到一个返回值,该返回值就是生成器对象,

    即自定义的迭代器

    yield1.提供一种自定义迭代器的解决方案

    2.yield&return相同点:都可以得到返回值,返回值没有类型限制

    不同点:return只能返回一次值,yield却可以让函数暂停在某一个位置,可以返回多次值

    在Python中使用了yield的函数被称之为生成器

    跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器

    在调用生成器运行的过程中,每次遇到yield时,函数会暂停并保存当前所有的运行信息,返回yield的值,并在下一次执行next()方法时

    从当前位置继续运行

    调用一个生成器对象返回的是一个迭代器对象

    1.函数的递归调用

    在调用一个函数的过程中又直接或间接的调用该函数本身,称之为递归调用

    递归必须满足两个条件:

    1.每进入下一次递归调用,问题的规模都应该有所减少

    2.递归必须有一个明确的结束条件

    递归有两个明确的阶段:

    1.回溯

    2.递推

  • 相关阅读:
    数学之路(3)-机器学习(3)-机器学习算法-SVM[7]
    iPhone 5s网络钓鱼邮件,和苹果发布会同步亮相
    c# winform读取xml创建菜单
    TCP/IP笔记 三.运输层(2)——TCP 流量控制与拥塞控制
    java.lang.RuntimeException: Unable to start activity ComponentInfo
    ListView 行高设置不起作用
    openstack中iptables的使用
    多线程中Local Store Slot(本地存储槽)
    oracle在一个字符串中查找某个字符出现过几次
    如何用万用表测二极管
  • 原文地址:https://www.cnblogs.com/suncunxu/p/10058583.html
Copyright © 2011-2022 走看看