在說明 Python 的資料結構前,先來了解什麼是資料結構,底下節錄維基百科上的解釋:
『在電腦科學中,資料結構(英語:data structure)是電腦中儲存、組織資料的方式。資料結構意味著介面或封裝:一個資料結構可被視為兩個函式之間的介面,或者是由資料類型聯合組成的儲存內容的存取方法封裝。 大多數資料結構都由數列、記錄、可辨識聯合、參照等基本類型構成。』
舉例來說,生活上我們常常在排隊等結帳,先到的先結帳(先進先出),這個就是資料結構中的佇列。常見的資料結構可分為兩種:「線性(Linear)」與「非線性(Non-linear)」。線性資料結構有:陣列(Array)、鏈結串列(Linked List)、堆疊(Stack)、佇列(Queue)、矩陣(Matrix);非線性資料結構有:堆積(Heap)、二元樹(Binary Tree)、圖(Graph)、雜湊表(Hash Table)。
而每種程式語言都有一些資料結構可以用,Python也不例外,從Python的官方文件可看到底下幾種:
1. Lists
下圖為 Lists 的示意圖
2. Tuples 與 Sequences
下圖為 Sequences 的示意圖
而 Tuples 就是可以含有很多的 Sequences,如下圖
3. Sets
下圖為 Sets 的示意圖,有交集、聯集、差集等關係。
4. Dictionaries
下圖為 Dictionareis 的示意圖:
能判斷什麼時候要用哪一種資料結構是程式設計時需要考慮的事情,考慮的觀點通常有:
- 效能。
- 彈性。
- 實作。
以上三點沒有絕對的順序,例如當需要先進先出的動作時,選用已有支援 Queue 的程式語言(如Java、C#等)就可以不自己重新打造 Queue 的程式庫了,若講究效能時,用C\C++語言會是選擇之一。
參考資料:
[1] https://www.tutorialspoint.com/python/python_data_structure.htm
沒有留言:
張貼留言