陣列

Python SELF TW
等級 51 , 課堂 3
開放

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) 的時間。
  • 非最佳記憶體使用: 如果陣列未完全使用,剩餘的記憶體單元未被填充,可能導致非最佳的記憶體使用。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION