Skip to content

[Python] 基本教學(10) List —— Python 中的陣列

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,填補一些敘述不完整的部份,希望大家繼續支持。


References


Read More

Leave a Reply