我最近开始研究如何在Python中实现各种数据结构,以使我的代码更高效。在研究列表和双端队列的工作方式时,我发现,我想转移和取消移位,可以将列表中的O(n)减少到双端队列的O(1)的时间(列表实现为具有每次在前面插入东西时都可以完全复制,等等。)。我似乎找不到关于如何实现双端队列的细节,以及其缺点与列表的细节。有人可以启发我解决这两个问题吗?
https://github.com/python/cpython/blob/v3.8.1/Modules/_collectionsmodule.c
Adequeobject由block节点的双向链接列表组成。
dequeobject
block
因此,deque是的,另一个答案表明,a是一个(双链接)列表。
deque
详细说明:这意味着Python列表对于随机访问和固定长度的操作(包括切片)要好得多,而双端队列在将内容推入和弹出两端时更有用,因为索引(但不是切片)可能但比列表慢。