python如何定义数组:两种主流写法

python如何定义数组,分为内置列表list和numpy数组两类方案,list是python原生可变序列,无需额外安装包,适合存储混合类型数据、小规模数据读写;numpy数组需要安装numpy库,仅支持单一数据类型,内存占用更低、数值运算速度更快,适合矩阵计算、批量数值处理。原生list常被初学者称作数组,但它不是底层连续内存数组,在循环百万级元素时运算效率明显弱于numpy数组。你做简单数据存储、临时变量集合时优先选list,做科学计算、多维矩阵运算时优先选numpy数组。

python如何定义数组:原生list写法

你直接使用方括号语法就能创建list,元素之间用逗号分隔,支持整数、字符串、浮点数混合存放。基础写法示例:arr=[1,2,3,4,5],代码执行后arr就是一个列表对象,支持增删改查操作,调用append()追加元素,pop()删除指定下标元素。空列表定义为arr=[],后续可以循环填充数据。list内部元素分散存储,每个元素都保存类型指针,相同数据量下内存开销高于numpy数组。

快速批量生成连续数字列表,你可以使用range函数配合list转换,写法arr=list(range(1,10)),生成1到9的连续整数序列。range本身不会一次性生成全部元素,转为list之后才会在内存创建完整序列。该方式适合快速生成有序一维序列,不适合生成多维结构。

list可以直接定义多维结构,二维示例arr=[[1,2],[3,4],[5,6]],本质是列表嵌套列表,各行长度允许不一致,不强制对齐。嵌套列表做矩阵乘法、切片运算时,语法繁琐,运算速度偏低,不适合大规模数值计算场景。

python如何定义数组:numpy数组写法

使用numpy定义数组前,你需要在终端执行pipinstallnumpy完成库安装,代码开头写入importnumpyasnp导入模块。基础一维数组写法arr=np.array([1,2,3,4,5]),np.array接收列表作为参数,自动转换为连续内存的ndarray对象。ndarray要求全部元素保持同一种数据类型,传入混合类型数据时会自动向上转换,例如同时传入整数和字符串,全部元素转为字符串类型。

numpy内置多个快捷函数生成特殊数组。np.zeros(5)创建长度为5、全部元素为0的浮点数组;np.ones((2,3))生成2行3列全部为1的二维数组;np.arange(0,10,2)生成0到8步长为2的一维数组。这类函数不需要手动录入全部元素,在批量初始化矩阵场景下可以减少代码量。

numpy多维数组传入嵌套列表定义,示例arr=np.array([[1,2],[3,4]]),生成严格对齐的二维矩阵,每一行元素数量必须相等,否则会生成对象类型数组,失去数值计算优化效果。多维数组使用arr.shape查看维度信息,返回元组,第一个值代表行数,第二个值代表列数。

类型依赖库元素类型适用场景
list列表无允许混合类型小规模数据、非数值混合数据
numpyndarraynumpy统一单一类型科学计算、多维矩阵、大数据运算

两者不可直接混用方法。list的append方法不能用于numpy数组,numpy数组大小固定,追加元素需要调用np.concatenate函数拼接,频繁拼接会产生额外内存开销。

该方法的适用边界是,python原生没有内置底层数组类型,list只是序列容器,不是编译型语言里的静态数组。如果你需要固定长度、不可修改的序列,可以使用tuple元组,写法arr=(1,2,3),元组创建完成后不能修改内部元素,修改操作会直接抛出异常。

不要将list直接用于十万级别以上数值循环运算,会出现明显耗时增加,这种场景改用numpy数组。

敬慕百科汇集百科知识与游戏文化,带你发现世界的每一个精彩角落。

想要了解更多关于python如何定义数组的文章欢迎访问:百科