Python 中的静态数组

新手上路,请多包涵

我正在学习如何使用 Python 进行编程,并且还在学习理论作为计算机科学课程的一部分。在编程中,我知道我可以通过使用 .append 函数向数组添加额外的变量,但是在我的理论课上,我们被告知数组的大小既不能增加也不能减少。

这在 python 中如何工作?

原文由 angry_badger 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 697
2 个回答

Python 在底层使用可调整大小的向量。他们知道列表中有多少元素以及当前总容量是多少。当您尝试添加超出集合大小时的另一个元素时,它会分配一个容量更大的新数组,并使用指向原始支持数组中的项的指针填充它。这个类似于java的ArrayList类型,只是python中没法指定容量

关于实施的详细帖子在这里: http ://www.laurentluce.com/posts/python-list-implementation/

它们不是链表; python没有内置链表类型,性能模式也不同。

原文由 Daenyth 发布,翻译遵循 CC BY-SA 3.0 许可协议

它不是 python,但在你未来的某一时刻,你也会在其他语言中看到它。解决此问题的另一种不涉及使用向量或链表的常见方法是使用动态数组。

本质上,您创建了一个大小有限的数组。如果用户调用 append 并且您的数组中没有更多空间。您创建一个比旧数组大 2 倍的新数组。然后复制所有元素并附加新元素。

2x 实际上很重要,因为它使插入时间摊销保持不变。 (虽然这是更高级的算法)

原文由 nbroeking 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题