码迷,mamicode.com
首页 > 其他好文 > 详细

迭代器 生成器

时间:2017-10-01 19:58:24      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:为什么   __next__   return   __iter__   状态   表达式   列表   包子   地方   

可迭代的:对象有__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(‘豆子‘)

迭代器 生成器

标签:为什么   __next__   return   __iter__   状态   表达式   列表   包子   地方   

原文地址:http://www.cnblogs.com/jack2017/p/7617642.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!