是否需要在Python中弹出列表的前面?

smi*_*dha 4 python list

python数据结构页面http://docs.python.org/tutorial/datastructures.html

也可以使用列表作为队列,其中添加的第一个元素是检索的第一个元素("先进先出"); 但是,列表不能用于此目的.虽然列表末尾的追加和弹出很快,但是从列表的开头进行插入或弹出是很慢的(因为所有其他元素都必须移动一个).

我可以理解为什么在列表前面插入插入效率会很低.但为什么说弹出列表的头部/开头很慢?在list -head右边进行弹出操作时不需要移位?

NPE*_*NPE 9

在list -head右边进行弹出操作时不需要移位?

将列表视为引用数组,其中列表的第一个元素始终位于数组位置零.当您弹出列表的第一个元素时,您必须将所有引用向左移动一个位置.

人们可以想象其他实现,其中弹出列表的前面将是便宜的(例如deque风格).我认为我们可以信任Python文档,并假设这不是内置list类的实现方式.

如果您需要从容器前面有效移除,请使用collections.deque:

Deques支持线程安全,内存有效的附加和从双端队列的弹出,在任一方向上具有大致相同的O(1)性能.