python 迭代器 生成器_Python的迭代器和生成器

这里简单的澄清一下Python中下面几个概念:

容器

可迭代对象

迭代器

生成器

1.烦人的概念

容器这个概念不妨就按照字面意思来理解,指能将一些元素组织在一起的一种数据结构,你可以通过 in 或者 not in 这样的关键字判断某个指定的元素是否包含在容器中。通常来说,容器会将所有的元素都存放到内存中,但也有例外,比如迭代器和生成器。在Python中,常见的容器对象有:list,set, tuple, str等。对于可迭代对象,标准的定义是这样的:它是Python中的任意一种对象,只要它定义了可以返回一个迭代器的 __iter__ 方法。简言之,可迭代对象就是能够提供迭代器的任意对象。那么什么是迭代器呢?仿照可迭代对象的定义,迭代器是指:带有状态的某种对象,在Python3中,任何实现了 __iter__ 方法和 __next__ 方法的对象都是迭代器,其中,当你调用__iter__ 方法时会返回迭代器自身,而调用 __next__ 方法时返回容器中的下一个值(若容器中没有更多的元素了,则抛出 StopIteration 的异常)。生成器是一种特殊的迭代器,用关键字 yield 标识。生成器一定是迭代器。

2.几个例子

s是一个可迭代对象(字符串),而it则变成了迭代器;

通过调用迭代器it的next方法,逐个提取其中的元素,直至耗尽该迭代器;

这里的reserve函数即为一个生成器,用过yield关键字代替了return;

生成器和迭代器都是工厂模式,只有在需要数据的时候才会产生数据,需要几个产生几个,优点是节省内存;

此处gen是一个生成器表达式,生成器表达式用一对圆括号表示;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值