10.1 動態數組的特點
動態數組 是那些在程序執行期間可以改變大小的數據結構。它們允許有效地管理元素集合,添加和刪除元素,而無需預先確定數組的大小。
在Python中,動態數組就是列表(內建類list),它允許在任意位置添加、刪除和修改元素。
動態數組的特點:
- 可變大小: 動態數組可以根據需要增加或減小。
- 快速隨機存取: 可以在常數時間
O(1)內訪問元素。 - 自動內存管理: Python自動管理列表的內存分配和釋放。
- 方便的元素操作方法: 內建方法讓添加、刪除和修改元素變得簡單。
在Python中創建和使用動態數組的示例:
# 創建列表
dynamic_array = [1, 2, 3, 4, 5]
# 添加元素
dynamic_array.append(6)
print(dynamic_array) # 輸出: [1, 2, 3, 4, 5, 6]
# 刪除元素
dynamic_array.remove(3)
print(dynamic_array) # 輸出: [1, 2, 4, 5, 6]
# 通過索引訪問
print(dynamic_array[2]) # 輸出: 4
# 修改元素
dynamic_array[2] = 10
print(dynamic_array) # 輸出: [1, 2, 10, 5, 6]
10.2 動態數組的優點和缺點
動態數組有其優勢和缺點。讓我們來詳細看看。
優點:
- 靈活性: 動態數組可以根據程序需求改變大小,使內存管理更加高效,並能處理不同數量的數據。
- 快速隨機存取: 像靜態數組一樣,動態數組允許在常數時間
O(1)內快速訪問元素。 - 使用方便: Python內建的列表操作方法(例如,append、remove、insert)簡化了元素操作,使代碼更易讀和維護。
- 自動內存管理: Python自動管理動態數組的內存,無需程序員手動分配和釋放內存。
缺點:
- 內存重新分配: 增大動態數組的大小時,可能需要重新分配內存,這涉及將元素複制到新的內存區,可能會暫時減慢程序執行速度。
- 插入和刪除元素的成本: 在數組中間插入和刪除元素需要移動元素,花費
O(n)時間。 - 更高的管理開銷: 與C等低級語言相比,Python中的動態數組在自動內存管理和異常處理方面有額外的開銷。
10.3 使用和應用的例子
讓我們來看一些Python中動態數組的使用例子。
1. 實現動態任務列表:
tasks = []
# 添加任務
tasks.append("Task 1")
tasks.append("Task 2")
tasks.append("Task 3")
# 完成任務並從列表中刪除
completed_task = tasks.pop(0)
print(f"Completed: {completed_task}")
print(f"Remaining tasks: {tasks}") # 輸出: Remaining tasks: ['Task 2', 'Task 3']
2. 實現動態對象列表:
students = []
# 添加學生
students.append("Alice")
students.append("Bob")
students.append("Charlie")
# 刪除學生
students.remove("Bob")
print(f"Students after removal: {students}") # 輸出: Students after removal: ['Alice', 'Charlie']
# 在特定位置插入學生
students.insert(1, "David")
print(f"Students after insertion: {students}") # 輸出: Students after insertion: ['Alice', 'David', 'Charlie']
GO TO FULL VERSION