在 Luciano Ramalho 所著的《Fluent Python》一书(第 2 版)中,他定义了容器序列和平面序列的概念:
容器序列保存对其所包含的对象的引用,这些对象可以是任何类型,而平面序列将其内容的值存储在其自己的内存空间中,而不是作为不同的 Python 对象。
range
我们可以说和类型的对象bytearray
是平面序列吗(我认为这些对象不能包含引用,但不确定)?
有没有一种简单的方法来测试一个序列是否是平面的?
我刚刚发现这篇文章引用了《Fluent Python》一书第一版中的一段话(我个人只有第二版):
平面序列:
str
,bytes
,bytearray
,memoryview
和array.array
仅保存一种类型的项目。
因此,这似乎bytearray
是一个平序列。在第二版(第 22 页)中,作者只说
扁平序列 – 保存一种简单类型的项目。例如:
str
、bytes
和array.array
。
容器序列 – 可以保存不同类型的项目,包括嵌套容器。例如:list
、tuple
和collections.deque
。