天天看点

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 列表的区别)