4.1 陣列的定義及其特性
陣列是種資料結構,代表 有序的相同類型元素集合,這些元素在記憶體中是連續的。每個陣列元素都有一個唯一的索引,用於訪問該元素。
這裡展示了簡單的大小為 4 的陣列,它包含元素 (1, 2, 3 和 4)。

陣列的特性:
- 固定大小: 陣列的大小在創建時設定,在程式執行過程中不能更改。
- 元素同質性: 所有陣列中的元素必須為同一類型(例如,整數、字串)。
- 記憶體中的連續佈局: 陣列的元素存儲在相鄰的記憶體單元中,這保證了快速的索引訪問。
- 索引的快速訪問: 訪問任何陣列元素只需常數時間
O(1)
。
4.2 使用陣列的例子
讓我們看看你可能已經知道的陣列使用例子:
存儲固定長度的資料
星期幾,幾月:
# 創建一個包含星期的陣列
days_of_week = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
print(days_of_week[2]) # 輸出: Wednesday
矩陣和多維陣列
3x3 矩陣:
# 創建 3x3 矩陣
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matrix[1][1]) # 輸出: 5
在排序算法中的使用
排序數字陣列:
# 排序數字陣列
numbers = [5, 2, 9, 1, 5, 6]
numbers.sort() # 排序陣列
print(numbers) # 輸出: [1, 2, 5, 5, 6, 9]
用於存儲暫時資料的緩衝區
從文件讀取的資料緩衝區:
# 創建 1024 字節大小的緩衝區
buffer = [0] * 1024
print(len(buffer)) # 輸出: 1024
4.3 陣列的基本操作
重要!Python 裡的 list 類是動態陣列,它可以在運行過程中改變自己的大小。關於動態陣列的更多信息會在之後的課程中提到。
基本操作:索引訪問、插入、刪除
索引訪問
通過索引訪問陣列元素,索引指向元素的位置。
# 透過索引訪問陣列元素
arr = [10, 20, 30, 40, 50]
print(arr[2]) # 輸出: 30
print(arr[-1]) # 輸出: 50 (最後一個元素)
插入
插入元素到陣列中可能需要移動後續所有元素,以便為新元素提供空間。
例子(插入元素到陣列中間):
# 插入元素到陣列
arr = [10, 20, 30, 40, 50]
arr.insert(2, 25) # 在位置 2 插入 25
print(arr) # 輸出: [10, 20, 25, 30, 40, 50]
刪除
從陣列刪除元素可能需要移動後續所有元素,以填補空出的位置。
例子(刪除元素):
# 從陣列刪除元素
arr = [10, 20, 30, 40, 50]
arr.pop(2) # 刪除位置 2 的元素
print(arr) # 輸出: [10, 20, 40, 50]
4.4 使用陣列的優缺點
讓我們考慮使用陣列的優點和缺點:
優點:
- 索引的快速訪問: 訪問任何陣列元素只需常數時間
O(1)
,所以陣列在讀取資料時非常高效。 - 簡單易用: 陣列容易理解和使用,並且容易在不同的任務中實現和應用。
- 低開銷: 陣列比起更複雜的資料結構(像是鏈結串列)佔用更少的記憶體。
缺點:
- 固定大小: 陣列的大小在創建時設定,不能更改。這意味著需要提前知道所需的陣列大小,或者使用可以隨需求增長的動態陣列。
- 插入和刪除的開銷: 插入和刪除元素可能需要花費時間,因為需要移動元素。最糟情況下,在中間插入或刪除元素需要
O(n)
的時間。 - 非最佳記憶體使用: 如果陣列未完全使用,剩餘的記憶體單元未被填充,可能導致非最佳的記憶體使用。
GO TO FULL VERSION