迭代器生成器与递归调用

Posted yu-931017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代器生成器与递归调用相关的知识,希望对你有一定的参考价值。

1.迭代器:

  1. 迭代:迭代是重复的过程,但是迭代中每次重复的结果都是下一重复的初始值。(这是迭代与重复的区别)
  2. 迭代器是循环取值的工具。

 

2.迭代器的有点与作用:

1.迭代器提供一种不依赖索引的取值方式。

2.迭代器能够节省内存。

 

3.迭代器的使用:

1.可迭代对象:但凡内置有__iter__方法的对象,都称之为可迭代对象。(如:字符串、字典、元组、列表、集合、文件)

2.迭代器对象:但凡内置有__ister____next__方法的对象,都称之为迭代器对象。

(包括:文件、以及可迭代对象被__ister__方法处理后返回值

 注意:迭代器对象一定是可迭代对象,可迭代对象不一定是迭代器对象

  1. 迭代器对象使用__next__方法进行取值,每次只能取一个值,取值结束会报错,所以最后需要进行捕捉异常。

__Ister__()方法将可迭代对象转化成迭代器对象,从而提供一种不按索引的取值方式。

__ister__方法实际是用来生成迭代器对象)

 

4.for循环分析:(fou i in k

    1.首先k得是一个可迭代对象。第一步先将k转化成迭代器对象

    2.多次调用__next__()方法,进行取值    

3.异常处理

 

二、生成器

  1. 定义:带有yield关键字的函数,在python中称之为生成器。
  2. 作用:调用带有关键字yield的函数时,生成器(函数体)不会立即执行代码,只是得到一个返回值。该返回值就是一个迭代器对象(即生成迭代器),然后调用迭代器的__next__方式时,每调用一次,函数体仅执行一次。

yield关键字的作用就是提供一种定义(生成)迭代器的解决方式。(retrun有很大区别,yeild可以返回多个值,不会马上终止程序)

 

三、函数的递归调用与二分法:

  1. 定义:在调用一个函数的工程中又直接或间接调用函数本省,称之为递归调用(达到一种循环的效果)
  2. 递归必须满足两个条件:
    1. 每进入下一次递归调用时,问题的规模有所减少。
    2. 递归必须有一个明确的结束条件。

    3.递归的两个阶段:

         1.回溯:一层一层递归下去,直到遇到递归结束条件。

         2.递推:往回一层一层递推。   

 

以上是关于迭代器生成器与递归调用的主要内容,如果未能解决你的问题,请参考以下文章

函数嵌套 ,名称空间与作用域 ,闭包函数 ,装饰器 ,迭代器, 生成器 三元表达式,列表解析,生成器表达式 递归与二分法, 内置函数

python-day5-生成器迭代器及递归调用

python--递归函数匿名函数嵌套函数高阶函数装饰器生成器迭代器

模块调用,datetime,time,logging,递归,双层装饰器, json,pickle迭代器和生成器

python08-迭代器与生成器

13t天 迭代器,生成器,内置函数