首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python :区别于列表?

Python :区别于列表?
EN

Stack Overflow用户
提问于 2014-03-12 01:17:47
回答 4查看 7.4K关注 0票数 14

我正在阅读Python文档:我不明白deque与列表有何不同。从文件中:

返回一个从左到右初始化的新deque对象(使用append())和来自迭代的数据。如果未指定可迭代性,则新的deque为空。 Deques是堆栈和队列的泛化(名称发音为“deck”,是“双结束队列”的缩写)。Deques支持线程安全,内存效率高的附加和弹出弹出,在两个方向上的O(1)性能大致相同。 虽然list对象支持类似的操作,但它们为快速固定长度的操作进行了优化,并为pop(0)和insert(0,v)操作带来了O(n)内存移动开销,从而改变了底层数据表示的大小和位置。

如果一个德克基本上是一个列表,但效率更高,为什么要用一个列表代替一个德克呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-03-12 01:22:11

deque更有效地从末端推和弹出。请继续阅读,并在下面列出您可以找到的方法:

索引访问在两端为O(1),但在中间则减慢到O(n)。对于快速随机访问,使用列表代替。

从列表的开头添加或删除是O(n),但是从中间取元素是O(1)。对于一个德克人来说,事实恰恰相反。

所以一般来说,你只想在你不关心中间的东西的时候才想要,你想要按某种顺序给它喂食,然后在其他地方按顺序把它们放回去。

票数 19
EN

Stack Overflow用户

发布于 2014-03-12 01:30:53

Deque是一个双链接列表,而List只是一个数组。

在索引I处随机访问对象的Deque是O(n),而List是O(1)。

在开始时快速插入和删除是Deque的最大优点。快速随机读取是List的优点。

如果插入和删除在容器中间随机发生,Deque必须找到节点(O(n),然后插入一个新节点(O(1)),而List必须移动一些节点(O(n))。

他们都有自己的用例。

票数 9
EN

Stack Overflow用户

发布于 2018-06-20 20:03:03

一个列表应该被迭代和/或随机访问。典型使用:存储同构数据项的集合。

队列设计为在结束/开始时操作。典型使用:存储带有优先级信息的数据,方便广泛/深度优先的搜索。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22340087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档