Python中的
list
现在被实现为指针的动态数组,因此不适合在前端进行插入和删除操作。然而,环形缓冲区也支持O(1)索引。它还可以像动态数组一样扩展和收缩,以支持O(1)摊销的两端插入和删除。为什么CPython没有选择这种实现方式,或者它的主要缺点是什么?
collections.deque
通常不如类似数组的列表快。因此,可能仅仅是出于性能方面的考虑(这并不是确定的答案,只是一个猜测)。 - MSeifertcollections.deque
不是通用的列表类型,也不支持O(1)索引。 - Jialin Song