准确来说Python中是没有数组类型的,只有列表 (list)和元组(tuple), 数组是numpy库中所定义的,所以在使用数组之前必须下载安装numpy库。 python中的list是python的内置数据类型,list中的数据类不必相同的,而array的中的类型必须全部相同。 在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了,例如list1= [1,2,3,'a']需要4个指针和四个数据,增加了存储和消耗cpu。
列表和数组的定义
- 列表用于顺序存储结构。它可以方便、高效的的添加删除元素,并且列表中的元素可以是多种类型。
- 数组是一个同一类型的数据的有限集合。
列表list与数组array的相同点:
a. 都可以根据索引来取其中的元素;
列表list与数组array的不同点:
a.列表list中的元素的数据类型可以不一样。数组array里的元素的数据类型必须一样;
b.列表list不可以进行数学四则运算,数组array可以进行数学四则运算;
c.相对于array,list会使用更多的存储空间。
二者都可以用于处理多维数组。
Numpy中的ndarray对象用于处理多维数组,它作为一个快速而灵活的大数据容器。Python列表可以存储一维数组,通过列表的嵌套可以实现多维数组。
2存储效率和输入输出性能不同。
Numpy专门针对数组的操作和运算进行了设计,存储效率和输入输出性能远优于Python中的嵌套列表,数组越大,Numpy的优势就越明显。
3元素数据类型。
通常,Numpy数组中的所有元素的类型都必须相同的,而Python列表中的元素类型是任意的,所以在通用性能方面Numpy数组不及Python列表,但在科学计算中,可以省掉很多循环语句,代码使用方面比Python列表简单的多。
例子:(从例子中可以看出list 和array的相同与不同之处)
import numpy as np
lis1=[1,2,3,4] #lis1是列表类型
a = np.array([1,2,3,4]) #a是数组类型
#从下面print可以看出 list和array都可以根据索引来操作;
print("list",lis1,lis1[0],'\n','array',a,a[0])
#从下面print可以看出list的+法运算是列表长度的增删,与数学计算无关;
#而array的+法运算是真正的数学四则运算;
print("list+list",lis1+lis1,'\n','array+array',a+a)
程序运行结果:
list [1, 2, 3, 4] 1
array [1 2 3 4] 1
list+list [1, 2, 3, 4, 1, 2, 3, 4]
array+array [2 4 6 8]
由于list与array的不同,所以也会涉及到Python里range()函数和numpy里的numpy.arange()的用处不同。