首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么从前面填充数组很慢?

为什么从前面填充数组很慢?
EN

Stack Overflow用户
提问于 2017-09-19 00:13:32
回答 1查看 665关注 0票数 3

在“用Python编写访谈的元素”一书中关于数组的章节中,提到从前面填充数组的速度很慢,所以看看是否可以从后面写值。

可能的原因是什么?

EN

回答 1

Stack Overflow用户

发布于 2017-09-19 02:42:55

Python列出了标准Python实现CPython (至少在实际上从数据结构的角度实现为数组,而不是列表。中)。

但是,它们是动态分配和调整大小的,因此在Python列表的末尾追加实际上是可能的。这样做需要一些可变的时间:当附加项超出实际需要时,CPython会尝试分配额外的空间,这样就不需要为每个附加操作分配更多的空间。充其量,如果已经分配了空间,则追加是O(1),而且由于它是数组,索引也是O(1)。

然而,需要很长时间才能在列表的开头添加一些内容,因为这需要移动所有数组值和是O(n),就像弹出第一个元素一样

Python语言设计人员决定调用这些数组列表而不是数组,这在一定程度上与标准术语相矛盾,我认为这是因为动态调整大小使得它们不同于标准的、固定大小的列表。

除非我搞错了,collections.deque实现了一个双链接列表,其中任何一方都添加了相应的O(1) /pops,以此类推。

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

https://stackoverflow.com/questions/46289892

复制
相关文章

相似问题

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