2017年4月23日 星期日

Data Structures in Python (Python 的資料結構)

在說明 Python 的資料結構前,先來了解什麼是資料結構,底下節錄維基百科上的解釋:

在電腦科學中,資料結構(英語:data structure)是電腦中儲存、組織資料的方式。資料結構意味著介面或封裝:一個資料結構可被視為兩個函式之間的介面,或者是由資料類型聯合組成的儲存內容的存取方法封裝。 大多數資料結構都由數列、記錄、可辨識聯合、參照等基本類型構成。』

舉例來說,生活上我們常常在排隊等結帳,先到的先結帳(先進先出),這個就是資料結構中的佇列

而每種程式語言都有一些資料結構可以用,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://openhome.cc/Gossip/CodeData/PythonTutorial/ContainerFlowComprehensionPy3.html