python生成器和迭代器

本文介绍了Python中的生成器和迭代器概念,包括生成器的两种形式:通过列表推导生成和含yield关键字的函数生成;同时解释了可迭代对象与迭代器的区别,以及如何利用这些特性提高程序效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生成器 generator

      生成器有两种,一种是列表推导的 [] 换成 () 就变成了生成器对象,另一种是 使用for遍历 含yield关键字的函数。
      普通函数是顺序执行,遇到return或者最后一句时返回,而生成器(generator),遇到next()函数时执行,遇到yield时返回,再次执行时从上次执行的yield处继续执行,直到遇到 StopIteration异常时停止 。实际中并不会使用next,而是使用for来循环执行这个generator。

      生成器在循环时并不是生成整个列表,而是按定义的计算方式,不断推算,从而节省内存空间。


可迭代对象 Iterable

     可作用于for循环的有两类,一类是集合数据类型(如list、dict等),另一类是生成器,这两类都称为可迭代对象(Iterable)。


迭代器 Iterator

     可被next函数调用,并不断返回下一个值的对象称为迭代器(Iterator),list、dict本身并不是Iterator,但可使用iter()函数将其变为Iterator。Iterator在需要返回时才会计算(惰性计算),是一种数据流,可以无限大。


分别使用迭代器对象和生成器实现可迭代对象




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值