迭代器 生成器

Posted

tags:

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

可迭代的:对象有__iter__方法的都是可迭代对象
 
 
为什么要用迭代器
1.迭代器提供一件依赖于索引的取值方式 ,这样就可以遍历那些1没有索引的可迭代对象(字典,集合)
2.迭代器与列表比较,迭代器更节省内存
 
缺点:
1.无法索引迭代器的长度,使用不如列表索引取值灵活
2. 一次性的,只能住后取值,不能往前
 
迭代器next 就可以取值

 

 

总结yield的功能:
1.相当于把__iter__和__next__方法封装到函数内部
2.与return比,return只能返回一次,而yield能返回多次
3.函数暂停已经继续运行的状态是通过yield保存的

 

 

#e.send与next(e)的区别
#1.如果函数内yield是表达式形式,那么必须先next(e)
#2.二者的共同之处是都可以让函数在上次暂停的位置继续运行,不一样的地方在于
send在触发下一次代码的执行时,会顺便给yield传一个值

e=eater(‘铁骨‘)
next(e)
e.send(‘包子‘)
e.send(‘豆子‘)

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

python:可迭代对象,迭代器,生成器函数,生成器的解析举例代码说明

python:可迭代对象,迭代器,生成器函数,生成器的解析举例代码说明

10.迭代器/生成器/协程函数/列表生成器

Interator和Generator

Interator和Generator

Interator和Generator