天天看點

Python清單不僅僅是一個清單(C 清單和 Python 清單的差別)

        設想如果使用一個包含很多 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

式)數組間的差別如下圖

所示。

Python清單不僅僅是一個清單(C 清單和 Python 清單的差別)