说到序列,我们第一想到的是一组有序元素组成的集合。同时,每个元素都有唯一的下标作为索引。
在python中,有许多内界的序列。包括元组tuple,列表list,字符串str等。上面提到的序列类型(list,tuple,str)有一个共同的特点,就是当序列对象创建时,需要开辟专门的内存空间,保存序列中的所有元素。换句话说,这些序列对象本质上,是一个集合。
例如,下面代码创建了一个序列对象s。在该对象序列创建时,需要开辟内存空间将序列中的3个元素(整数1,2,3)保存下来。
s=[1,2,3]
然而,根据Python官方文档的定义,一个序列对象不必要保存所有的元素。一般来说,一个序列对象至少需要实现如下两个方法。
- __len__方法。该方法返回序列长度,也即序列中元素个数。
- __getitem__方法。该方法有一个整型参数(不妨记为index)。它需要返回序列中下标为index的元素的值。
例如,下面的代码定义了一个序列类型。
class MyRange:
def __init__(self, start, end):
self.start = start
self.end = end
def __len__(self):
re