Python 列表 (List) (06):列表操作指南

把「有一堆東西」變成「能被快速重組的一堆東西」,關鍵就在列表的進階操作。


本篇延續列表(List)基礎,帶你把常見任務——插隊/出隊、批次產生序列、擷取子區段、統計元素、排序——全部做成一行一行可讀、可維護的 Python 程式。

你會知道什麼時候該原地改動清單、什麼時候該產生新清單,以及怎麼避開 IndexError 等小陷阱。

增加元素:使用 .insert() 方法

Python 的 .insert() 方法允許我們在列表的特定索引位置添加元素。

store_line = ["Karla", "Maxium", "Martim", "Isabella"]
store_line.insert(2, "Vikor")
print(store_line)
# 輸出:['Karla', 'Maxium', 'Vikor', 'Martim', 'Isabella']

.insert() 關鍵要點

  • 第一個參數是您想插入的索引位置
  • 第二個參數是您想插入的元素值
  • 所有在指定索引及之後的元素都會向右移動一個位置
  • 可以使用負索引(從列表末尾計算)

使用 .insert() 方法可以讓您精確控制新元素的位置,這在管理有序數據時特別有用。

刪除元素:使用 .pop() 方法

.pop() 方法允許我們移除列表中特定索引的元素,並返回被移除的值。

cs_topics = ["Python", "Data Structures", "Balloon Making", "Algorithms", "Clowns 101"]

# 不指定索引時,移除最後一個元素
removed_element = cs_topics.pop()
print(cs_topics) # ['Python', 'Data Structures', 'Balloon Making', 'Algorithms']
print(removed_element) # 'Clowns 101'

# 指定索引時,移除該索引的元素
cs_topics.pop(2)
print(cs_topics) # ['Python', 'Data Structures', 'Algorithms']
Python list pop method demonstration with elements being removed

.pop() 方法細節

無參數使用

當不提供索引時,.pop() 會默認移除列表的最後一個元素。

fruits = ["apple", "banana", "cherry"]
last = fruits.pop()  # 移除 "cherry"

指定索引

提供索引參數時,.pop(index) 會移除指定位置的元素。

fruits = ["apple", "banana", "cherry"]
second = fruits.pop(1)  # 移除 "banana"

返回值

.pop() 方法的獨特之處是它會返回被移除的元素,可以將其保存到變量中。

常見錯誤

對空列表使用 .pop() 或提供不存在的索引都會引發 IndexError。

range() 函數的多種用法

單參數

range(stop) – 從 0 開始,到 stop-1 結束

list(range(5)) # [0, 1, 2, 3, 4]

雙參數

range(start, stop) – 從 start 開始,到 stop-1 結束

list(range(2, 7)) # [2, 3, 4, 5, 6]

三參數

range(start, stop, step) – 從 start 開始,按 step 遞增,到 stop-1 結束

list(range(1, 10, 2)) # [1, 3, 5, 7, 9]

使用 range() 函數可以節省時間並減少出錯的可能性,特別是在需要創建大型數字序列時。

Python length function visualization with array length measurement

獲取列表長度

使用 len() 函數

在 Python 中,我們經常需要知道列表中有多少個元素。len() 函數可以幫助我們獲取列表的長度。

my_list = [1, 2, 3, 4, 5]
print(len(my_list))  # 輸出: 5

empty_list = []
print(len(empty_list))  # 輸出: 0

nested_list = [[1, 2], [3, 4], [5, 6]]
print(len(nested_list))  # 輸出: 3

len() 函數對於控制循環、檢查列表是否為空以及管理數據結構非常有用。

列表切片 I

獲取列表的子集

Python 提供了一種稱為切片的強大語法,可以從列表中選擇部分元素。

letters = ["a", "b", "c", "d", "e", "f", "g"]
sliced_list = letters[1:6]
print(sliced_list)  # 輸出: ["b", "c", "d", "e", "f"]

注意:切片時包含起始索引的元素,但不包含結束索引的元素。

列表切片 II

高級切片技巧

獲取前 n 個元素

fruits[:n]

例如:fruits[:3] 獲取前三個元素

獲取最後 n 個元素

fruits[-n:]

例如:fruits[-2:] 獲取最後兩個元素

排除最後 n 個元素

fruits[:-n]

例如:fruits[:-1] 獲取除最後一個外的所有元素

切片語法非常靈活,允許您以簡潔的方式獲取列表的任何部分。

Python count method illustration with elements being counted in a list

計算列表中的元素

使用 .count() 方法

在處理列表時,我們經常需要知道某個元素在列表中出現了多少次。

letters = ["m", "i", "s", "s", "i", "s", "s", "i", "p", "p", "i"]
num_i = letters.count("i")
print(num_i)  # 輸出: 4

# 也可以計算子列表在二維列表中的出現次數
number_collection = [[100, 200], [100, 200], [475, 29], [34, 34]]
num_pairs = number_collection.count([100, 200])
print(num_pairs)  # 輸出: 2

.count() 方法返回一個值,可以將其存儲在變量中或直接在表達式中使用。

排序列表 I

使用 .sort() 方法

Python 的 .sort() 方法可以按升序(數字從小到大,字母從 a 到 z)對列表進行排序。

names = ["Xander", "Buffy", "Angel", "Willow", "Giles"]
names.sort()
print(names)  # 輸出: ['Angel', 'Buffy', 'Giles', 'Willow', 'Xander']

# 使用 reverse=True 參數進行降序排序
names.sort(reverse=True)
print(names)  # 輸出: ['Xander', 'Willow', 'Giles', 'Buffy', 'Angel']

注意:.sort() 方法直接修改原始列表,不返回任何值。

排序列表 II

使用 sorted() 函數

不改變原列表

sorted() 函數創建一個新的排序列表,原始列表保持不變。

names = ["Xander", "Buffy", "Angel", "Willow", "Giles"]
sorted_names = sorted(names)
print(sorted_names)  # ['Angel', 'Buffy', 'Giles', 'Willow', 'Xander']
print(names)  # ["Xander", "Buffy", "Angel", "Willow", "Giles"]

函數語法

作為內置函數,sorted() 在列表前使用,而不是作為列表的方法。

# 使用 reverse 參數進行降序排序
sorted_names_desc = sorted(names, reverse=True)
print(sorted_names_desc)  # ['Xander', 'Willow', 'Giles', 'Buffy', 'Angel']

當需要保持原始列表不變的同時獲取排序版本時,sorted() 是最佳選擇。

發佈留言

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

返回頂端