在 Python 中,列表和數組是兩種常用的數據結構,它們各有優缺點,適用于不同的場景。以下是它們的對比:
列表 (List)
- 定義:列表是 Python 內置的數據結構,可以存儲任意類型的元素。
- 靈活性:列表可以包含不同類型的元素,如整數、字符串、甚至其他列表。
- 動態性:列表的大小是動態的,可以隨時增加或刪除元素。
- 性能:由于列表是動態數組,插入和刪除操作的時間復雜度為 O(n),但訪問元素的時間復雜度為 O(1)。
- 使用場景:適用于需要存儲不同類型數據或需要頻繁修改數據的場景。
示例代碼:
python
my_list = [1, "hello", 3.14, [2, 4, 6]]
print(my_list[1]) # 輸出 "hello"
my_list.append(42)
print(my_list) # 輸出 [1, "hello", 3.14, [2, 4, 6], 42]
數組 (Array)
- 定義:數組是由 array 模塊提供的數據結構,存儲相同類型的元素。
- 類型限制:數組中的所有元素必須是相同類型,這使得數組在某些操作上更高效。
- 性能:數組在存儲和訪問方面比列表更高效,特別是在需要大量數值計算時。
- 使用場景:適用于需要存儲大量相同類型數據且需要高效數值計算的場景。
示例代碼:
python
import array
my_array = array.array('i', [1, 2, 3, 4, 5])
print(my_array[2]) # 輸出 3
my_array.append(6)
print(my_array)
數組的數據類型限制
- 相對而言,數組通常要求所有元素的數據類型相同。在 Python 中,數組通常使用 NumPy 庫來實現,NumPy 數組是同質的,意味著它們只能存儲相同類型的數據。例如:
- import numpy as np
- my_array = np.array([1, 2, 3, 4]) # 整數數組
數組的數學運算
- NumPy 數組專注于數值運算和高性能計算,提供了許多高級的數學功能。例如,可以輕松實現矩陣運算、廣播、以及線性代數等操作:
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = A @ B # 矩陣乘法
print(C) # 輸出:[[19 22]
# [43 50]]