python数据结构页面http://docs.python.org/tutorial/datastructures.html说
也可以使用列表作为队列,其中添加的第一个元素是检索的第一个元素("先进先出"); 但是,列表不能用于此目的.虽然列表末尾的追加和弹出很快,但是从列表的开头进行插入或弹出是很慢的(因为所有其他元素都必须移动一个).
我可以理解为什么在列表前面插入插入效率会很低.但为什么说弹出列表的头部/开头很慢?在list -head右边进行弹出操作时不需要移位?
在list -head右边进行弹出操作时不需要移位?
将列表视为引用数组,其中列表的第一个元素始终位于数组位置零.当您弹出列表的第一个元素时,您必须将所有引用向左移动一个位置.
人们可以想象其他实现,其中弹出列表的前面将是便宜的(例如deque风格).我认为我们可以信任Python文档,并假设这不是内置list类的实现方式.
如果您需要从容器前面有效移除,请使用collections.deque:
Deques支持线程安全,内存有效的附加和从双端队列的弹出,在任一方向上具有大致相同的O(1)性能.