在 Python 程式設計中,串列 (list) 是一種用途廣泛的序列型別,用於儲存有序的元素集合。本文將深入探討 Python 串列的各個方面,包括定義、建立方式、基本操作、常用方法、迭代,以及實際應用。
什麼是串列 (list)?
串列是由一系列按照特定順序排列的元素組成的資料結構。串列具有以下特點:
- 有序性 (Ordered): 串列中的元素有固定的順序,可以透過索引 (index) 存取。
- 可變性 (Mutable): 串列的內容可以修改 (新增、刪除、修改元素)。
- 異質性 (Heterogeneous): 串列中的元素可以是不同的資料型別 (例如,同時包含整數、字串、浮點數,甚至是其他串列)。
在 Python 中,串列屬於 list
型別。
建立串列
有幾種方式可以建立串列:
- 使用方括號
[]
(最常見): 將元素用逗號分隔,並放在方括號中。 - 使用
list()
函數: 將其他可迭代物件 (例如字串、元組) 轉換為串列。
# 使用方括號 []
my_list = [1, 2, 3, 4, 5]
fruits = ['apple', 'banana', 'orange']
mixed_list = [1, 'hello', True, 3.14]
empty_list = []
# 使用 list() 函數
string = "Hello"
char_list = list(string) # 輸出: ['H', 'e', 'l', 'l', 'o']
tuple_data = (10, 20, 30)
list_from_tuple = list(tuple_data) # 輸出: [10, 20, 30]
print(type(my_list)) # 輸出: <class 'list'>
串列的基本操作
1. 索引 (Indexing)
使用方括號 []
和元素的索引 (從 0 開始) 來存取串列中的特定元素。也可以使用負數索引,-1 表示最後一個元素,-2 表示倒數第二個元素,依此類推。
my_list = ['a', 'b', 'c', 'd', 'e']
print(my_list[0]) # 輸出: a
print(my_list[2]) # 輸出: c
print(my_list[-1]) # 輸出: e
print(my_list[-3]) # 輸出: c
2. 切片 (Slicing)
使用 [start:end:step]
的形式來提取串列的一部分。 start
是起始索引 (包含),end
是結束索引 (不包含),step
是步長 (預設為 1)。
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(my_list[2:5]) # 輸出: [2, 3, 4]
print(my_list[:4]) # 輸出: [0, 1, 2, 3] (從開頭到索引 4)
print(my_list[6:]) # 輸出: [6, 7, 8, 9] (從索引 6 到結尾)
print(my_list[::2]) # 輸出: [0, 2, 4, 6, 8] (每隔一個元素取一個)
print(my_list[::-1]) # 輸出: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] (反轉串列)
3. 新增元素
append(item)
: 在串列末尾新增一個元素。insert(index, item)
: 在指定索引處插入一個元素。extend(iterable)
: 將另一個可迭代物件 (例如另一個串列) 中的所有元素添加到串列末尾。
my_list = [1, 2, 3]
my_list.append(4) # [1, 2, 3, 4]
my_list.insert(1, 5) # [1, 5, 2, 3, 4]
my_list.extend([6, 7]) # [1, 5, 2, 3, 4, 6, 7]
print(my_list)
4. 刪除元素
remove(item)
: 刪除第一個與指定值相等的元素 (如果找不到會引發ValueError
)。pop([index])
: 移除並返回指定索引處的元素 (預設為最後一個元素)。del list[index]
: 刪除指定位置的元素。clear()
: 清空list。
my_list = [1, 2, 3, 2, 4]
my_list.remove(2) # [1, 3, 2, 4] (刪除第一個 2)
popped_element = my_list.pop() # 移除並返回最後一個元素 (4) -> my_list: [1, 3, 2]
del my_list[0] # 刪除index=0的元素。
my_list.clear() # 清空list
print(my_list) #輸出: []
5. 修改元素
直接透過索引賦值來修改串列中的元素:
my_list = [1, 2, 3]
my_list[1] = 10 # 將索引 1 的元素修改為 10
print(my_list) # 輸出: [1, 10, 3]
6. 其他操作
len(list)
: 計算list長度。list1 + list2
: list 串接。list * n
: 把list重複n次。in
,not in
: 檢查元素是否存在。
list1 = [1,2,3]
list2 = [4,5,6]
print(len(list1)) # 3
print(list1 + list2) # [1,2,3,4,5,6]
print(list1 * 2) # [1,2,3,1,2,3]
print( 1 in list1) #True
print( 1 not in list2) #True
串列的常用方法
除了上述基本操作外,Python 串列還提供了許多方法:
sort()
: 對串列進行排序 (預設為升序,可以透過reverse=True
參數進行降序排序)。 *會直接修改原串列*reverse()
: 反轉串列中的元素順序。 *會直接修改原串列*index(item)
: 返回指定元素第一次出現的索引 (如果找不到會引發ValueError
)。count(item)
: 計算指定元素在串列中出現的次數。copy()
: 返回串列的淺拷貝 (shallow copy)。
my_list = [3, 1, 4, 1, 5, 9, 2, 6]
my_list.sort()
print(my_list) # 輸出: [1, 1, 2, 3, 4, 5, 6, 9]
my_list.reverse()
print(my_list) # 輸出: [9, 6, 5, 4, 3, 2, 1, 1]
print(my_list.index(4)) # 輸出: 3
print(my_list.count(1)) # 輸出: 2
走訪串列 (Iteration)
您可以使用 for
迴圈來遍歷串列中的每個元素:
fruits = ['apple', 'banana', 'orange']
for fruit in fruits:
print(fruit)
串列的應用
- 儲存一系列相關資料: 例如,學生的成績、購物清單、待辦事項等。
- 作為函數的參數或返回值: 許多函數會接受串列作為參數,或返回串列作為結果。
- 實現其他資料結構: 例如,堆疊 (stack) 和佇列 (queue) 可以使用串列來實現。
- 資料分析和機器學習: 串列常用於儲存和處理數據。
總結
Python 的串列 (list) 是一種功能強大且靈活的資料結構,提供了豐富的操作和方法。掌握串列的特性和用法,對於 Python 程式設計非常重要。