1、2.1.2 二维数组1 11010 1111 2020 21212912 19 223813 18 234714 17 245615 16 255行5列方阵方阵二维数组的概念二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。二维数组又称为矩阵,行列数相等的矩阵称为方阵。二维数组的特性数组的存储方法是顺序存储,每个元素在存储器中占用的空间大小相同。“按行优先”存储二维数组时,8所在的位置表示为:a21,在整个数组第12个位置。“按列优先”存储二维数组时,8所在的位置表示为:a12,在整个数组第8个位置。按“行优先顺序”存储二维数组时,需要知道它的最大列数。若二维数组第一个元素存放的位置
2、为LOC(a00),最大列数为C,每个元素占用的空间大小为s,则元素aij的存放位置为:LOC(aij)=LOC(a00)+(i*C+j)*s按“列优先顺序”存储二维数组时,需要知道它的最大行数R。元素aij的存放位置为:LOC(aij)=LOC(a00)+(j*R+i)*s二维数组的基本操作1.二维数组的创建python中创建二维数组的方式比较特殊,不能使用如同一维数组的方式创建。例如,创建一个3行4列的二维数组,其初始化元素值均为0,代码如下:a=0,0,0,0,0,0,0,0,0,0,0,0python中可以使用列表生成式来创建二维数组,代码如下:a=0 for i in range(4
3、)for j in range(3)也可以写成a=0*4 for i in range(3)。但不能写成a=0*4*3a=0*4*3表示对一行数据0的3次引用,3行中同一列的数据会同时被修改。2.二维数组元素的访问数组元素的访问指的是寻址到特定的数据元素,并根据存储地址对该数据元素进行读取、修改等操作。二维数组的行、列下标均从0开始,即a00表示数组的第一个元素。若用二维数组a来存储矩阵,则第i行第j列的元素表示为ai-1j-1。a=i*i for i in range(5)for j in range(5)for i in range(5):for j in range(5):print(a
4、ij)比如下面这段代码能实现将二维数组中的每个数据输出:应用演练随机生成由95-100以内的整数构成的5行5列矩阵,经过编程实现该矩阵的行列置换,大家想一想这个代码该怎么实现?989897979999969696969898999897951009598969610098979897971009798989898989595969697979798100100979999959810096989897979697969898练 习1.二维数组a中,每个元素所占空间大小为8个字节,行下标i从0到5,列下标j从0到9,从首地址SA开始连续存放在存储器内,该数组按行存放时,元素a23的起始地址为:A
5、.SA+160 B.SA+136 C.SA+184 D.SA+168C2.有如下python 程序段:a=0*6b=a:b3=8则程序执行后,a3的值为:A.0 B.3 C.6 D.8A3.有如下python程序段:a=i+1 for i in range(4)for j in range(3)for i in range(3):for j in range(4):aij=aij+4*i则程序执行后,a12的值为:A.2 B.4 C.7 D.8C4.有如下python程序段:a=0*3 for i in range(4)for i in range(len(a):for j in range(
6、len(a0):aij=i*len(a0)+j+1则程序执行后,a22的值为:A.5 B.6 C.8 D.9D5.小刚将我国部分省会城市及其对应的市花存储到二维数组中,并依次输出各省会城市名及其市花,例如:杭州的市花是桂花。相关代码如下:a=“杭州市”,“桂花”,“广州市”,“木棉”,“郑州市”,“月季”,“武汉市”,“梅花”,“长沙市”,“杜鹃”,“济南市”,“荷花”for i in a:print(f”的市花是 ”)则划线和处分别应填写的代码为A.p1;p0 B.p0;p1C.ap0;ap1 D.p1;p2B6.有如下python程序段:n=4a=j*n+i+1 for i in range(n)for j in range(n)for i in range(1,n,2):for j in range(n/2):aij,ain-j-1=ain-j-1,aij则程序执行后,a11和a21的值分别为:A.6和10 B.7和10 C.6和11 D.7和11B谢 谢