Python中的静态数组
我正在学习如何用python编程,同时作为计算机科学课程的一部分学习理论。在编程中,我知道我可以通过使用.append函数向数组中添加额外的变量,但是在我的理论课中,我们被告知数组的大小既不能增加也不能减少Python中的静态数组,python,arrays,python-3.x,static,Python,Arrays,Python 3.x,Static,我正在学习如何用python编程,同时作为计算机科学课程的一部分学习理论。在编程中,我知道我可以通过使用.append函数向数组中添加额外的变量,但是在我的理论课中,我们被告知数组的大小既不能增加也不能减少 这在python中是如何工作的?python中的列表类似于链表。它们可以动态增长,每个元素都可以指向任何东西 如果您对Python中的动态id和非动态id感到好奇,那么您应该阅读关于可变性和不可变性的内容: Python在引擎盖下使用可调整大小的向量。它们维护列表中有多少元素以及当前总容量的
这在python中是如何工作的?python中的列表类似于链表。它们可以动态增长,每个元素都可以指向任何东西 如果您对Python中的动态id和非动态id感到好奇,那么您应该阅读关于可变性和不可变性的内容:
Python在引擎盖下使用可调整大小的向量。它们维护列表中有多少元素以及当前总容量的知识。当您尝试添加超出集合大小的另一个元素时,它会分配一个容量更大的新数组,并使用指向原始备份数组中的项的指针填充该数组。这类似于java的ArrayList类型,只是无法在python中指定容量 有关实施的详细帖子如下:
它们不是链表;python中没有内置链表类型,性能模式也不同。它不是python,但在将来的某个时候,您也会在其他语言中看到这一点。解决这个问题的另一种常用方法是使用动态数组,它不需要使用向量或链表 实际上,您创建的数组大小有限。如果用户调用append,而阵列中没有更多空间。您将创建一个比旧阵列大2倍的新阵列。然后复制所有元素并附加新元素
2x实际上很重要,因为它保持插入时间摊销不变。(更高级的算法)在你的理论类中,你必须学习C++或C。不要混淆。从理论类中定义“数组”似乎更符合Python的定义。通常,数据结构概念是特定于语言的。C、C++和java数组的大小固定。Python有不同的数据结构。Python列表是与C数组完全不同的数据结构。这就是为什么它们被称为
list
,而不是array
。阵列在系统资源方面效率更高。Python列表对于程序员来说更加灵活和方便,我不认为这个问题太宽泛。这里的主要问题似乎是问python列表是如何实现的。这一点也不过分。Python列表不是链表。类似!=一模一样。@Will他们也不一样。它们都是有序的集合,但这并不多。类似于:形容词:性质相似。
你的学究作风对任何人都没有帮助。有些人说话抽象。