对Python中可迭代对象、迭代器、生成器等概念的理解

“迭代”是程序设计中的一个非常重要概念,它可以简单地理解为“重复地做一些事情”。Python提供了迭代器和生成器的功能,但这些概念不易掌握。这篇文章主要是总结下我个人的一些理解。不对之处,恳请各位批评指正。下面所有代码的运行环境为Python 3.6.8。

一. 迭代的必要性

Python程序设计中,我们为什么要学习迭代?首先,采用迭代可以方便地遍历集合类对象(list、tuple、range、set、dict等)。其次,迭代采用延迟计算,可以降低存储空间的要求。

Python的循环只有while 和 for...in...两种结构。通过for......in结构可以方便地遍历集合类对象中的所有元素。如下所示

Python中的for...in...结构中必须包含可迭代对象,其运行机制稍后会讲到。

下面再看一个比较极端一点的例子,假如说,我程序中需要用到0~100000000的平方。直观的方案是分别计算这100000000个数的平方并按序存储在一个列表中。毫无疑问,这会造成巨大的内存开销。另一种方案是采用生成器,延迟计算。也就是说,我们并不提前计算和保存每个数的平方,而只是保存生成下一个数平方的算法。只有真正用到时,我们才调用算法进行计算。这种方案显著降低了内存开销。如下图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值