2016-04-16 29 views
-2

对于具体的“列表”和“数组”,区别取决于编程语言,还是计算机科学领域的普遍性? 我是CS的新手,出于某种原因,我只听到Python中提到的'list'和Java中的'array',从未听过Java中的'array'或Python中的'list'。这是否意味着实施方面的差异?或只是在命名?'指令'与'指令'有什么不同? 'array'中的'list'?

+0

Python具有列表和数组,它们的行为不同。大多数情况下,当在Python上下文中提到数组时,numpy数组是指(而不是标准库中的数组)。所以是的,如果你正在谈论一种特定的语言,肯定会有一些背景依赖性。 – Evert

+0

@Evert这个问题对于程序员来说是个很差的问题 - 它会很快被拒绝并在那里关闭,请参阅http://meta.programmers.stackexchange.com/questions/6483/why-was-my-question-closed -or-down-voted/6490#6490推荐阅读:** [Programmers.SE是怎么回事?一个堆栈溢出指南](http://meta.programmers.stackexchange.com/q/7182/31260)** – gnat

回答

0

这可能取决于实际编程语言和/或平台...但在更一般的术语:

  • 阵列是一组保持相同类型的元素在“连续存储器的包装“的方式。
  • 列表是一组项目,由链接这些项目的指针(或类似机制)来解决。在内存中不一定是连续的

这是一个非常笼统的广义描述......不同的语言和平台可能会以不同的方式实现。在某些情况下,数组和列表可能难以区分。

更可能的是,一个数组有一个固定的大小(要调整它的大小,你必须创建一个新的数组,并将原始内容复制到它),并且不能有“洞”。列表具有(通常)动态容量,并且您可以在任何时候插入或删除项目而不会破坏原始列表。但是,这些实现细节可能会因您使用的编程语言而异。

+0

我不同意。这是一个以* C *为中心的方式来看待它。 C#“List”对象是您在C++中称为“vector”的对象。 –

+0

@MartinBonner我试过(不确定是否成功),给出了适用于多种语言的广泛描述,但是,不可能不偏袒某个地方。语言设计师可以标注他们想要的东西:-) – Jcl

+0

C++或Java如何?我听说他们是最流行/标准的语言。这些语言中的“列表”,“数组”和“矢量”有何不同? –