点这里,搜索淘宝优惠券!
点这里,搜索淘宝优惠券!

迭代器与生成器

【迭代器】:对应实现迭代规则的魔法方法:__iter__(self):

  实际上是一个具有 next 方法的对象,调用next方法会返回下一个值。迭代器逐个依次访问成员,而 __getitem__(self)魔法函数使用下标访问任意成员。

【迭代器与列表】

  列表一次性获取所有值

  迭代器每次获取一个值

【推荐使迭代器实现自己的 __iter__方法,这样可以在 for循环中使用迭代器本身】:__iter__方法工内建函数 iter() 和 for循环调用

【for循环中使用迭代器的原理】:首先获取对象的的迭代器,然后调用迭代器对象的next方法?

【内建函数 iter 可以从可迭代对象中获得迭代器

【内建函数 list,将迭代器转换为列表】

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【生成器】:

  用普通函数语法定义的迭代器:yield;任何包含yield语句的函数叫做生成器。

  生成器每次返回多个值,每返回一个值函数就会被冻结

【列表推导式与生成器推导式】

  列表推导式:在 【】中实现,返回一个列表,一次返回所有元素

  生成器推导式:在 ()中实现,返回一个生成器,调用 next 函数生成下一个元素,具有迭代特性

【迭代器与生成器】  

  迭代器:是提供 next 方法的实例对象自己处理自己

  生成器:是对实例对象进行出处理的函数,返回一个包含 next 方法的实例对象

【递归生成器与字符串】:会把字符串当做序列解包,这往往不是我们想要的!

【生成器方法】

  send:传递参数给生成器

  throw:引发异常

  close:停止生成器

【模拟生成器】-针对旧版本不原生支持生成器问题

  

    

posted @ 2018-09-19 11:20  chd_ailex  阅读(139)  评论(0编辑  收藏  举报