Python 标准库用 C 实现了丰富的序列类型,列举如下:
容器序列:list
、tuple
和 collections.deque(双端队列)
这些序列能存放不同类型的数据。
扁平序列:str
、bytes
、bytearray
、memoryview(内存视图)
和 array.array(数组)
,这类序列只能容纳一种类型。
容器序列存放的是它们所包含的任意类型的对象的引用,换句话说,扁平序列其实是一段连续的内存空间。
扁平序列里存放的是值而不是引用,它里面只能存放诸如字符、字节和数值这种基础类型。
序列类型还能按照能否被修改来分类:
可变序列:list
、array.array
、collections.deque
和 bytearray
、 memoryview
。
不可变序列:tuple
、str
和 bytes
。
dict 和 set 不是序列;
可变序列(MutableSequence
)和不可变序列(Sequence
)的差异,同时也能看出前者从后者那里继承了一些方法。虽然内置的序列类型并不是直接从 Sequence
和 MutableSequence
这两个抽象基类(Abstract Base Class,ABC)继承而来的,但是了解这些基类可以帮助我们总结出那些完整的序列类型包含了哪些功能。