之前说过,python采用的是动态数组,并且我们可以用list来实现array结构。那么list和array是否完全一样呢?答案是否定的。
在array中,每个元素会以二进制的形式储存在内存里。比如:数值直接转换为二进制编码,字符串则先通过ASCII码转换为数值,再进而转换为二进制编码。因此,array里只能储存相同类型的元素,并需要事先指定元素的类型。例如在Java中,需要指定元素是int,long或是char,等等。
在python list中,每个元素其实是一个指针(pointer),指向包含这个python对象所有信息的某个内存位置。这里面包含了大量的额外信息,因此python可以自由、动态地编码。也就是说,python list里可以储存不同类型的元素,且不需要事先指定元素的类型。
此外,array可以进行四则运算,而python list不可以进行四则运算。比如:在python中,[1, 2] + [1, 2] 结果为[1, 2, 1, 2],而非[2, 4]。