4. 串列的函式與方法
1. 串列的內建函式
在串列中經常被應用的內建函式,如下表所示:
| 函式 | 使用說明(若lst1 = [10,20,30,40,50]) |
|---|---|
len() | 計算串列的長度,可取得串列元素的數目。 例: num = len(lst1) # num ← 5 |
sum() | 進行串列中所有元素值的加總。 例: total = sum(lst1) # total ← 150 |
max() | 取得串列中元素的最大值。 例: big = max(lst1) # big ← 50 |
min() | 取得串列中元素的最小值。 例: small = min(lst1) # small ← 10 |
程式碼
lst1 = [10,20,30,40,50] print(str(num := len(lst1))) # 輸出:5(同時變數 num 也成功被賦予 5),Python 3.8 以上版本才支援 := 運算子 # 使用 f-string print(f"total = {sum(lst1)}") # 輸出:total = 150 big = max(lst1) print(str(big)) # 輸出:50 print(f"min = { min(lst1)}") # 輸出:small = 10
串列的方法
在串列中經常被應用的方法,如下表所示:
| 方法 | 使用說明(若 lst1 = [10,20,30,40,50]) |
|---|---|
append(value) | 新增串列元素,將 value 附加到串列最後一個元素的後面。例: lst1.append(66) # lst1 = [10,20,30,40,50,66] |
insert(index,value) | 在串列註標 index 處插入一個值為 value 的元素。例: lst1.insert(2,77) # lst1 = [10,20,77,30,40,50] |
pop() | 刪除串列最後一個元素。 例: lst1.pop() # lst1 = [10,20,30,40] |
pop(index) | 刪除串列註標 index 處的元素。例: lst1.pop(3) # lst1 = [10,20,30,50] |
remove(value) | 刪除串列中第一個值為 value 的元素。例: lst1.remove(20) # lst1 = [10,30,40,50] |
index(value) | 取得串列中第一個值為 value 的元素註標。例: n1 = lst1.index(30) # n1 ← 2 |
count(value) | 取得串列中出現值為 value 的元素數目。例: n2 = lst1.count(30) # n2 ← 1 |
del | 刪除串列指定註標的元素。 例: lst2 = [11,22,33,44,55,66,77]del lst2[3] # 刪除註標 3 元素 ⇒ lst2 = [11,22,33,55,66,77]del lst2[1:5] # 刪除註標 1~4 元素 ⇒ lst2 = [11,66,77]del lst2[1:5:2] # 刪除註標 1~4 元素,間隔 1 個元素# lst2 = [11,33,55,66,77]del lst2[:] # 刪除所有元素 ⇒ lst2 = [] |
clear() | 刪除串列所有的元素。 例: lst1.clear() # lst1 = [], 與 del lst1[:] 相同 |
程式碼
# 初始化原始串列 lst1 = [10, 20, 30, 40, 50] print(f"0. 初始狀態: {lst1}\n" + "-" * 40) # 1. append(value) - 附加到最後面 lst1.append(66) print(f"1. append(66) 後 : {lst1}") # 2. insert(index, value) - 插入指定位置 (索引 2) lst1.insert(2, 77) print(f"2. insert(2, 77) 後: {lst1}") # 3. count(value) 與 index(value) - 統計與尋找位置 cnt = lst1.count(30) idx = lst1.index(30) print(f"3. 數字 30 出現 {cnt} 次,並位於索引: {idx}") # 4. remove(value) - 刪除第一個指定的值 (刪除 20) lst1.remove(20) print(f"4. remove(20) 後 : {lst1}") # 5. pop(index) - 刪除指定位置元素並回傳 (刪除索引 3 的元素) removed_val = lst1.pop(3) print(f"5. pop(3) 移除了 [{removed_val}],剩餘: {lst1}") # 6. pop() - 預設刪除最後一個元素 lst1.pop() print(f"6. pop() 後 : {lst1}") print("\n" + "=" * 40 + "\n[測試 del 切片與 clear 方法]\n") # 7. del 刪除操作 (使用新串列示範) lst2 = [11, 22, 33, 44, 55, 66, 77] print(f"原始 lst2: {lst2}") del lst2[1:5:2] # 刪除索引 1 到 4,步長為 2 的元素 (刪除索引 1 的 22 與 索引 3 的 44) print(f"del lst2[1:5:2] 後: {lst2}") # [11, 33, 55, 66, 77] # 8. clear() - 清空整個串列 lst2.clear() print(f"lst2.clear() 後 : {lst2}") # []
串列的運算子
在串列中經常被應用的運算子,如下表所示:
| 運算子 | 使用說明(若 lst1 = [10,20,30,40]) |
|---|---|
in | 判斷指定的資料是否存在於串列中。 例: tf = 40 in lst1 # tf ← True例: tf = 95 in lst1 # tf ← False |
not in | 判斷指定的資料是否不存在於串列中。 例: tf = 40 not in lst1 # tf ← False例: tf = 95 not in lst1 # tf ← True |
= | 將串列的記憶體位址指定給另一個變數,此時兩者占用同一串列內容。 例: data1 = lst1 # data1 和 lst1 都是 [10,20,30,40]此時當 data1 中的元素改變,lst1 也會跟著改變。例: data1[2] = 33 # data1 和 lst1 都是 [10,20,33,40] |
+ | 連結兩個串列元素。 例: lst2 = [66,77,88]lst3 = lst1 + lst2 # lst3 = [10,20,30,40,66,77,88] |
* | 複製串列元素。 例: lst4 = 2 * lst1 # lst4 = [10,20,30,40,10,20,30,40]lst5 = lst1 * 3 # lst5 = [10,20,30,40,10,20,30,40,10,20,30,40] |
程式碼
lst1 = [10,20,30,40] print(str(tf := 40 in lst1)) print(str(tf := 95 in lst1)) print(str(tf := 40 not in lst1)) print(str(tf := 95 not in lst1)) data1 = lst1 data1[2] = 33 print(lst1) # 輸出:[10, 20, 33, 40] lst2 = [66,77,88] print(lst3 := lst1 + lst2) # 輸出:[10, 20, 33, 40, 66, 77, 88] lst4 = 2 * lst1 print(lst4) # 輸出:[10, 20, 33, 40, 10, 20, 33, 40] lst5 = lst1 * 3 print(lst5) # 輸出:[10, 20, 33, 40, 10, 20, 33, 40, 10, 20, 33, 40]
串列與字串
一個長字串可以用切割字元(如:空格、逗號、分號、句號…等)進行字串分割,被切割後的子字串,可建立字串串列,而被切割的子字串便為字串的元素。而字串串列的元素,可用連結字元連接成一個長字串。
- 字串的分割
將一個長字串根據切割字元,切割建立成字串串列的語法如下:字串串列 = 字串.split(切割字元)
[例] 分割一個長字串st1,被切割後的子字串建立成arr1串列。(檔名:split.py)
程式碼
split.pyst1 = '人之初,性本善,性相近,習相遠' arr1 = st1.split(',') print(arr1) # 印出 ['人之初', '性本善', '性相近', '習相遠']
- 字串的連結
將字串串列的元素使用連結字元,連接成一個長字串的語法如下:字串 = 連結字元.join(字串串列)
[例] 將arr2字串串列元素連接成一個長字串st2。(檔名:join.py)
程式碼
arr2 = ['苟不教', '性乃遷', '教之道', '貴以專'] # 連結字元為一個空格。連結字元會成為連結字元的一部分。 st2 = ' '.join(arr2) print(st2) # 印出 苟不教 性乃遷 教之道 貴以專
[簡例] 建立空串列後,使用者可輸入整數決定元素的數量,再依序輸入元素的內容。 (檔名:dynamic.py)
dynamic.pylst = [] # 計算輸入字元總長度 count = eval(input('請輸入lst串列的元素數量:')) print('請依序填入各元素的內容...') # 會產生一個從 0 開始、長度為 count 的數字序列 for i in range(count): print(f'輸入第 {i+1} 個元素內容:' , end = '') num = eval(input()) lst.append(num) print('lst串列的元素內容:') for x in lst: print(x, end = ' ')
相關主題與延伸閱讀
- 2. 一維串列:先備知識,了解串列的建立與讀取存放方式。
- 5. 串列的排序:延伸介紹
sort()、sorted()等排序相關方法。 - 3. 使用迴圈操作串列:搭配迴圈使用串列的函式與方法處理多筆資料。
- 1. 字串資料型別:
split()、join()方法連結字串與串列之間的轉換。