Python 串列 (list) 型別詳解:建立、操作、方法與應用

Python 串列 (list) 型別詳解:建立、操作、方法與應用

在 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 程式設計非常重要。

張貼留言

較新的 較舊