Python List (串列)
List 是 Python 中最常用的資料結構,用來儲存有序的元素集合。List 是可變的 (mutable),可以新增、刪除或修改元素。
建立 List
使用方括號 [] 建立 List:
# 空的 list
empty_list = []
# 有元素的 list
fruits = ["apple", "banana", "orange"]
numbers = [1, 2, 3, 4, 5]
# list 可以包含不同型別的元素
mixed = [1, "hello", 3.14, True]
存取元素
使用索引存取元素,索引從 0 開始:
fruits = ["apple", "banana", "orange"]
print(fruits[0]) # apple
print(fruits[1]) # banana
print(fruits[-1]) # orange(負數從尾端算起)
print(fruits[-2]) # banana
List 切片 (Slicing)
語法:list[start:end:step]
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(numbers[2:5]) # [2, 3, 4]
print(numbers[:3]) # [0, 1, 2]
print(numbers[7:]) # [7, 8, 9]
print(numbers[::2]) # [0, 2, 4, 6, 8]
print(numbers[::-1]) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0](反轉)
修改元素
fruits = ["apple", "banana", "orange"]
fruits[1] = "grape"
print(fruits) # ['apple', 'grape', 'orange']
List 長度
fruits = ["apple", "banana", "orange"]
print(len(fruits)) # 3
新增元素
fruits = ["apple", "banana"]
# append() - 在尾端新增一個元素
fruits.append("orange")
print(fruits) # ['apple', 'banana', 'orange']
# insert() - 在指定位置新增元素
fruits.insert(1, "grape")
print(fruits) # ['apple', 'grape', 'banana', 'orange']
# extend() - 新增多個元素
fruits.extend(["kiwi", "mango"])
print(fruits) # ['apple', 'grape', 'banana', 'orange', 'kiwi', 'mango']
刪除元素
fruits = ["apple", "banana", "orange", "grape"]
# remove() - 刪除指定值的元素
fruits.remove("banana")
print(fruits) # ['apple', 'orange', 'grape']
# pop() - 刪除指定索引的元素(預設是最後一個)
removed = fruits.pop() # 刪除並回傳最後一個元素
print(removed) # grape
print(fruits) # ['apple', 'orange']
removed = fruits.pop(0) # 刪除並回傳第一個元素
print(removed) # apple
print(fruits) # ['orange']
# del - 刪除指定索引的元素
fruits = ["apple", "banana", "orange"]
del fruits[1]
print(fruits) # ['apple', 'orange']
# clear() - 清空整個 list
fruits.clear()
print(fruits) # []
檢查元素是否存在
fruits = ["apple", "banana", "orange"]
print("apple" in fruits) # True
print("grape" in fruits) # False
print("grape" not in fruits) # True
遍歷 List
fruits = ["apple", "banana", "orange"]
# 用 for 迴圈
for fruit in fruits:
print(fruit)
# 如果需要索引
for i, fruit in enumerate(fruits):
print(f"{i}: {fruit}")
輸出:
apple
banana
orange
0: apple
1: banana
2: orange
List 排序
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
# sort() - 原地排序(會修改原 list)
numbers.sort()
print(numbers) # [1, 1, 2, 3, 4, 5, 6, 9]
# 降冪排序
numbers.sort(reverse=True)
print(numbers) # [9, 6, 5, 4, 3, 2, 1, 1]
# sorted() - 回傳新的排序 list(不修改原 list)
original = [3, 1, 4, 1, 5]
sorted_list = sorted(original)
print(original) # [3, 1, 4, 1, 5]
print(sorted_list) # [1, 1, 3, 4, 5]
List 反轉
numbers = [1, 2, 3, 4, 5]
# reverse() - 原地反轉
numbers.reverse()
print(numbers) # [5, 4, 3, 2, 1]
# 或用切片
numbers = [1, 2, 3, 4, 5]
reversed_list = numbers[::-1]
print(reversed_list) # [5, 4, 3, 2, 1]
List 複製
original = [1, 2, 3]
# 直接賦值是參考,修改會影響原 list
ref = original
ref.append(4)
print(original) # [1, 2, 3, 4]
# 用 copy() 或切片建立副本
original = [1, 2, 3]
copy1 = original.copy()
copy2 = original[:]
copy1.append(4)
print(original) # [1, 2, 3]
print(copy1) # [1, 2, 3, 4]
其他常用方法
numbers = [1, 2, 3, 2, 4, 2, 5]
print(numbers.count(2)) # 3(2 出現的次數)
print(numbers.index(4)) # 4(4 第一次出現的索引)
print(sum(numbers)) # 19(所有元素的總和)
print(max(numbers)) # 5(最大值)
print(min(numbers)) # 1(最小值)
List Comprehension
用簡潔的語法建立 list:
# 傳統寫法
squares = []
for x in range(5):
squares.append(x ** 2)
# List comprehension
squares = [x ** 2 for x in range(5)]
print(squares) # [0, 1, 4, 9, 16]
# 加上條件
evens = [x for x in range(10) if x % 2 == 0]
print(evens) # [0, 2, 4, 6, 8]
巢狀 List
List 中可以包含其他 list:
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matrix[0]) # [1, 2, 3]
print(matrix[0][1]) # 2
print(matrix[1][2]) # 6