設想如果使用一個包含很多 Python
對象的
Python
資料結構,會發生什麼?
Python
中的标準可變多元素容器是清單。可以用如下方式建立一
個整型值清單:
建立一
個整型值清單:
list_a = list(range(10))
print(list_a)
print(type(list_a[0]))
示例1結果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
<class 'int'>
建立一個字元串清單:
list_b = [str(c) for c in list_a]
print(list_b)
print(type(list_b[0]))
示例2結果:
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
<class 'str'>
因為
Python
的動态類型特性,甚至可以建立一個異構的清單:
list_c = ["3", 3.0, 3, True]
print([type(i) for i in list_c])
示例3結果:
[<class 'str'>, <class 'float'>, <class 'int'>, <class 'bool'>]
但是想擁有這種靈活性也是要付出一定代價的:為了獲得這些靈活的類型,清單中的每一項必須包含各自的類型資訊、引用計數和其他資訊;
也就是說,每一項都是一個完整的
Python
對象。來看一個特殊的例
子,如果清單中的所有變量都是同一類型的,那麼很多資訊都會顯得多
餘
——
将資料存儲在固定類型的數組中應該會更高效。
動态類型的清單和固定類型的(NumPy
式)數組間的差別如下圖
所示。
