Last Updated on 2021-03-28 by Clay
list 是 Python 中可說是最最常用的資料型態 (Data Type),當然,除非你是打從一開始便是從 Machine Learning 的角度入門。 (因為你最熟悉的陣列多半是 Numpy)。
但實際上,雖然我標題寫說 List 是 Python 中的 Array(陣列),但實際上,它真正的資料結構是與 Linked List 一致的。
如大家習慣直接閱讀 Tutorail,可以參考這個網站:
https://docs.python.org/3.6/tutorial/datastructures.html
這是官方的教學文章第五章,今天所教的部份亦不會與這個範圍出入太多。
List
Python 中最常使用的,正如前述,多半便是 List 這個資料型態莫屬。List 可以任意添加數字、字串……大部分你會使用到的東西,多半都可以先存進 List 中,方便你進行後面的調用。
List 的建成多半是由兩種方法:
1. 直接將想存入 List 的資料直接建製在 List 裡頭:
List = [1, 2, 3, '今天', '天氣', '真好']
2. 將其他資料(例如元組(tuple))以 for 迴圈的形式存入 List:
data = (1, 2, 3, '今天', '天氣', '真好') List = [] for value in data: List.append(value)
首先假設我們有一組資料——在這裡就是以『元組』(tuple)的資料型態存在著的『data』——然後我們建制了一個空陣列 List。
接下來便是 for-loop 登場了。
我們將 tuple 裡的數值,以 append 的指令存入空陣列 List。
print(List)
我們將 List 印出來看看:
[1, 2, 3, '今天', '天氣', '真好']
是的,當初 tuple 裡的資料已經被存入 List 當中了!
在此順帶紀錄,其實除了這種要寫非常多程式碼的最值白的作法,其實還有相當多的方法可以將值存入 List 。(在此還是以 tuple 舉例,不過你可以盡量多試試幾種類別)
a = [n for n in data] b = list(data)
a 是一種常見的方法,在陣列內以迴圈建立值。
b 則是一種(可能)習慣不好的方法,它直接就將 tuple 的值轉成 list!
print(a) print(b)
Output:
[1, 2, 3, '今天', '天氣', '真好']
[1, 2, 3, '今天', '天氣', '真好']
看來並沒有發生錯誤。
remove
List 當中存在著 remove 的指令,可以移除想要移除的項目。
在此提醒,如果存在著同樣的項目,那很有可能只能移除掉較末項。
List = [1, 1, 1, 2, 2, 2, 3, 3] List.remove(1) print(List)
那我們會移除什麼呢?
[1, 1, 2, 2, 2, 3, 3]
答案是:最末項的 1 。
index
List 中的 index ,可以方便我們查找我們想要的『值』,位於哪個位子。
List = [1, 2, 3, 4, 5, 6] print(List.index(3)) print(List.index(6))
Output:
2
5
(小提醒:List 的 index 計算是從 0 開始的哦!應該說,大部分的計算機語言都是這樣設計的!)
當然,我們同樣也可以以 index 呼叫 List 中的值。
print(List[2]) print(List[5])
Output:
3
6
insert
insert 這個指令需要兩個輸入值:(位置, 數值)。我們來實際看個例子:
List.insert(0, 100) print(List)
Output:
[100, 1, 2, 3, 4, 5, 6]
可以清晰地瞧見!我們將 100 這個數插在了 index 0 的地方!
那麼,如果我們指定插入的位置遠大於實際擁有的 index 呢?
List.insert(10000, 100) print(List)
Output:
[100, 1, 2, 3, 4, 5, 6, 100]
我們想要插入的數值會放在在 List 的最後一項!
List 還有許多的功能,也能用其完成許多資料結構,但受限於今日的篇幅,可能只能介紹於此了,希望能帶大家稍微認識所謂的 List 。
隨著寫的 Python 教學文越來越多,越發地認識到自己是個講述道理不甚符合邏輯的人,常常有著發散性的思維。
也許在整個教學告一段落之際,會再好好地從頭 review,填補一些敘述不完整的部份,希望大家繼續支持。