一尘不染

Python中的双端队列如何实现?何时比列表差?

python

我最近开始研究如何在Python中实现各种数据结构,以使我的代码更高效。在研究列表和双端队列的工作方式时,我发现,我想转移和取消移位,可以将列表中的O(n)减少到双端队列的O(1)的时间(列表实现为具有每次在前面插入东西时都可以完全复制,等等。)。我似乎找不到关于如何实现双端队列的细节,以及其缺点与列表的细节。有人可以启发我解决这两个问题吗?


阅读 176

收藏
2020-12-20

共1个答案

一尘不染

https://github.com/python/cpython/blob/v3.8.1/Modules/_collectionsmodule.c

Adequeobjectblock节点的双向链接列表组成。

因此,deque是的,另一个答案表明,a是一个(双链接)列表。

详细说明:这意味着Python列表对于随机访问和固定长度的操作(包括切片)要好得多,而双端队列在将内容推入和弹出两端时更有用,因为索引(但不是切片)可能但比列表慢。

2020-12-20