(Python)-初學 Class-5 — 串列的基本用法

(Python)-初學 Class-5 — 串列的基本用法

(Python)-初學 Class-5 — 串列的基本用法 list 像櫃子般整齊收納我們的資料    

在前面我們學了 條件判斷 以及 迴圈 等,可以使程式因應各種不同狀況來做出不同的動作。我們也學過了 變數 跟 基本資料型態 的用法,這 一篇要來介紹的是較為複雜的資料型態 — 串列 list 。

如果曾經有學過 C 語言或是 C++等其他程式語言的話,不同語言通常都可以使用序列來記錄連續性的資料,例如 C 和 C++中常使用的就是陣列 ( Array )。 而在 Python 當中,則使用 list 或tuple 來儲存連續性的資料。

 

5-1 串列 list

 

首先要來介紹的資料型態就是 list 。 list 可以用來儲存一連串有順序性的元素。例如我們想要產生一個名叫 thriller 的 list :

 

thriller = [‘Thriller’, ‘Billie Jean’, ‘Beat It’]

 

我們會把想要儲存的元素放在 [] 兩個括號中,不同元素之間使用逗號來隔開。上面這行 code 代表我們創建了一個名叫 thriller 的 list,

而在這個 list裏面包含了’Thriller’ 、 ‘Billie Jean’ 、 ‘Beat it’ 這幾個字串。

如果想要將這個 list 印出,結果如下,會印出 thriller 裡面所包含的字串。

如果想要知道這個 list 裡面有幾個元素,可以使用 len() 這個函式。

 

Learn 1 :

thriller = ['Thriller', 'Billie Jean', 'Beat It']

print(thriller)

print(len(thriller))

[‘Thriller’, ‘Billie Jean’, ‘Beat It’] 3

 

5-2 取得 list 的元素

 

想要取得元素的話,可以在 listlist 的名稱後面使用方括號 [] 加上想取得元素的位置 ( index ),就可以取得想要的元素。

my_list[index]

值得一提的是,程式語言中的 index 是從 0 開始的。所以如果想要取得第一個位置的元素,要輸入的位置值會是 0 ,想取得第二個元素則得,輸入 1 ,以此類推。

 

例如,今天我們想要取得 ‘Billie Jean’ 這個元素。

‘Billie Jean’ 是 thriller 當中的第二個元素,要輸入的 index 是 1。

當輸入print(thriller[1]) 這行指令,就會印出 ‘Billie Jean’ 了 !

 

Learn 2 :

thriller = ['Thriller', 'Billie Jean', 'Beat It']

print(thriller[1])

Billie Jean

上面是印出 list 不同位置的結果。

 

Learn 3 :

thriller = ['Thriller', 'Billie Jean', 'Beat It']

print(thriller[0])

print(thriller[1])

print(thriller[2])

Thriller Billie Jean Beat It

 

可以看到 :

thriller[0] 代表的是第一個字串 “Thriller” 、 thriller[1] 代表的是第二個字串 “Billie Jean” , thriller[2] 所代表的則是最後一個字串 “beat it” 。

取得 list 裡面的最後一個元素

如果想要取得 list 中的最後一個元素,除了前面輸入字串的 index 以外,也可以輸入 -1 。list[-1] 和 list[len(list)-1] 所代表的值是 相同的。

 

Learn 4 :

thriller = ['Thriller', 'Billie Jean', 'Beat It']

print(thriller[-1])

Beat It

由述可以看到, print(thriller[-1]) 的結果會是 “Beat It” 。

 

使用 -1 ,就可以不必知道整個 list 的長度,也能夠取得最後一個元素。

由於我們常常會更動 list 的內容及長度,以-1 來表示最後一個元素的話,就不必一直更改 index ,可以增加程式的一致性 (consistency) ,日後更改或是維護的時候會更方便。

取到 list 裡面所沒有的元素 : list index out of range

在 thriller 這個 list 當中只有三個元素,代表可以取得的 index 只有 0 、1、2。如果試著取 index 為 3 的值會發生什麼事呢?

由下圖可以看到 ,如果輸入 print(thriller[3]) 的話,會出現錯誤 IndexError,這就代表我們不小心取到不存在的元素了。

 

Learn 5 :

thriller = ['Thriller', 'Billie Jean', 'Beat It']

print(thriller[3])

IndexError: list index out of range

 

以範圍取值想要取得一連串範圍的值,使用的方式如下:

 

my_list[start(開始的index):end(結束的index):sep(間隔)]

 

值得注意的是,取出來的值只會包含開頭,不會包含結束的 index。後面的間隔如果沒有特別輸入的話,初始值為 1。

以 thriller 這個例子來說,如果想要取得 index 為 0, 1, 2 的值,程式碼如下:

 

Learn 6 :

thriller = ['Thriller', 'Billie Jean', 'Beat It','Human Nature','PYT']

print(thriller[0:3])

print(thriller[3])

[‘Thriller’, ‘Billie Jean’, ‘Beat It’] Human Nature

輸入print(thriller[0:3]) 所得到的結果,會是 “Thriller” 、 “Billie Jean” 及 “Beat It” ,也就是 index 為 0、 1、 2 的元素。

並不會包含索引值是 3 的值。

以範圍取值的更多表示方法

 

如果輸入 my_list[:end] 、也就是省略輸入索引值起點,初始會從 0 開始。

所以輸入 my_ist[:2] 和 my_ist[0:2] 的結果會是一樣的。

至於 my_list[start:] 省略終點的話,Python 會假設你想要取到最後一個值,所以輸入 my_list[2:len(my_list)] 和 my_list[2:] 的結果是一樣的。

 

Learn 7 :

thriller = ['Thriller', 'Billie Jean', 'Beat It','Human Nature','PYT']

print(thriller[:3])

print(thriller[2:])

[‘Thriller’, ‘Billie Jean’, ‘Beat It’] [‘Beat It’, ‘Human Nature’, ‘PYT’]

如上面的例子所示, print(thriller[:3]) ,會印出 index 從 0 開始、到 3 結束(不包含 3 )的元素。

print(thriller[2:]) 則得到 index 從 2 開始,一直到結束的元素。

 

5-3 增加 list 裡面的元素

 

1. append method

想要增加 list 裡面的元素,可以使用 append 這個方法( method )來將新的元素增加到 list 的最後。

my_list.append(object)

以 thriller 的例子來說,若想要在這個代表著專輯的 list 當中加入

“That Girl is Mine” 這首歌的話,就可以使用 list 的 append method。

輸入thriller.append(‘That Girl is Mine’) ,就會在這個 list 的最後加入這首歌了。

 

Learn 8 :

thriller = ['Thriller', 'Billie Jean', 'Beat It']

thriller.append('That Girl is Mine')

print(thriller)

[‘Thriller’, ‘Billie Jean’, ‘Beat It’, ‘That Girl is Mine’]

可以看到,thriller 的最後面被加上了 “That Girl is Mine”。

 

2. insert method

如果想要指定所增加物件的位置呢 ? 可以使用 list 的另一個方法 (method) insert 來指定位置。

my_list.insert(position, object)

用法是my_list.insert(位置, 物件) ,在括號後面第一個值代表的是想要插入的位置,後面則是想要加入的東西本身。

拿上面 append 曾使用過的 thriller 例子來說,把 append 換成 insert,並且指定插入的索引值是 1。程式碼如下 :

 

Learn 9 :

thriller = ['Thriller', 'Billie Jean', 'Beat It']

thriller.insert(1, 'That Girl is Mine')

print(thriller)

[‘Thriller’, ‘Billie Jean’, ‘That Girl is Mine’, ‘Beat It’]

可以看到新加入的 ‘That Girl is Mine’ 被排在 list 中的第二個,也就是索引值 index 為 1 的位置。

 

3. extend method

如果一次想加入很多個值、或是想將某個 list 中的元素加到另一個 list 的時候,可以用 extend 這個方法。

list_1 = [object1, object2, object3] list_2 = [object4, object5] list_1.extend(list_2)

NameError: name ‘object1’ is not defined

不能使用 insert 或append 嗎?看看下面這個例子:

 

Learn 10 :

bad_1 = ['Bad', 'Smooth Criminal','Speed Demon']

bad_2 = ['Man in the Mirror', 'Dirty Diana']

bad_1.insert(1, bad_2)

print(bad_1)

[‘Bad’, [‘Man in the Mirror’, ‘Dirty Diana’], ‘Smooth Criminal’, ‘Speed Demon’]

 

結果所示,如果想用 insert 把 bad_2 這個 list 加到 bad_1 中整合,可以看到 bad_2 的確是被加進 bad_1 中了沒錯,不過是以整個 list (the list itself)的資料型態被塞入的,而不是以元素的形式被加入。

可以看到 “Man in the Mirror”及”Dirty Diana” 兩個元素又被一個中括號所框住,代表的是一個物件

要把第二個 list 中的元素 (而不是整個 list) 加到第一個 list 中的做法,就是改成使用 extend。

 

Learn 11 :

bad_1 = ['Bad', 'Smooth Criminal','Speed Demon']

bad_2 = ['Man in the Mirror', 'Dirty Diana']

bad_1.extend(bad_2)

[‘Bad’, ‘Smooth Criminal’, ‘Speed Demon’, ‘Man in the Mirror’, ‘Dirty Diana’]

結果,可以看到透過用 extend ,成功將 bad_2 中的歌曲以元素的形式整合到 bad_1 中。

 

5-4 移除 list 中的元素

 

1. remove method

想要移除一個 list 中的元素,可以使用 remove method。

 

my_list.remove(object)

 

在 remove 後面的括號中輸入想要移除的元素,即可移除。

下面的例子,我們想要將 “Smooth Criminal” 這首歌從 bad 清單中刪去。

 

Learn 12 :

bad = ['Bad','Smooth Criminal','Speed Demon','Man in the Mirror','Dirty Diana']

bad.remove('Smooth Criminal')

print(bad)

[‘Bad’, ‘Speed Demon’, ‘Man in the Mirror’, ‘Dirty Diana’]

 

結果 ,可以看到 “Smooth Criminal” 被刪了。 (QQ)

如果只是想要移除這個 list 的最後一個元素的話,可以用 pop method。

 

list.pop()

 

在括號後面不放任何東西的話, 預設 list 中的最後一個 element 會被移除,且會回傳所移除的那個值。

 

Learn 13 :

bad = ['Bad','Smooth Criminal','Speed Demon','Man in the Mirror','Dirty Diana']

popped = bad.pop()

print(bad)

print(popped)

[‘Bad’, ‘Smooth Criminal’, ‘Speed Demon’, ‘Man in the Mirror’] Dirty Diana

 

如程式碼所示,我們在使用 pop method 的時候,產生一個變數 popped,讓這個變數等於 bad.pop() 所回傳的值。

印出 bad 時可以看見, bad 的最後一個元素 “Dirty Diana”已經被移除了;而印出 popped 變數可以看到那正是前面被移除的 “Dirty Diana”。

 

pop method 對於想要把 list 當作特定資料結構使用來說非常方便 (例如 stack 跟 queue)。

現在我們學到了 list 基本的使用方法,可以處理一連串的資料了~

接下來會介紹如何整理、排序 list,讓資料在處理的時候更加方便有效率 !

 

 

免責聲明:

1.本影像檔案皆從網上搜集轉載,不承擔任何技術及版權問題

2.如有下載連結僅供寬頻測試研究用途,請下載後在24小時內刪除,請勿用於商業

3.若侵犯了您的合法權益,請來信通知我們,我們會及時刪除,給您帶來的不便,深表歉意。

 



發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *