本节书摘来自异步社区《python数据科学指南》一书中的第1章,第1.10节,作者[印度] gopi subramanian ,方延风 刘丹 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。
可迭代对象和生成器十分相似,但是有一个重要的区别:我们可以重复地访问一个可迭代对象,即使我们已经访问完了序列中的所有元素,我们还可以从头重新访问它,这和生成器是完全不同的。
如果不保持任何状态,它们就是基于对象的生成器。所有带有iter方法的类,在用来产生数据时,都可以被作为无状态对象生成器来使用。
我们通过一个简单的示例来理解可迭代对象。如果理解了之前介绍的生成器和迭代器,你也能很容易地理解这个概念。
我们来创建一个简单的可迭代对象simpleiterable,用代码来演示如何使用可迭代对象。
在第1步中,我们创建了一个简单的类作为我们的可迭代对象。init构造函数有两个参数,起始和结束,这和我们之前的示例很相似。我们定义了一个iter函数,它将提供我们需要的序列,给定一个数值范围,返回这些数的平方值。
接下来,我们采用两个循环,在第1个循环中,我们迭代访问范围内的数值,从1到10。当我们进入第2个for循环时,我们会发现程序又迭代访问了那些序列,并且没有出现任何异常情况。
第1章“python在数据科学中的应用”中1.8节“使用迭代器”的相关内容。
第1章“python在数据科学中的应用”中1.9节“生成一个迭代器和生成器”的相关内容。