2016-04-16 28 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如何?我聽說他們是最流行/標準的語言。這些語言中的「列表」,「數組」和「矢量」有何不同? –