《【信息技术 】数组 课件 浙教版(2019)高中信息技术选修1.pptx》由会员分享,可在线阅读,更多相关《【信息技术 】数组 课件 浙教版(2019)高中信息技术选修1.pptx(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2.1数组数组基本概念数组是由相同类型的变量构成的一个序列。由数组名和下标组成数组的各个变量称为数组的分量,也称为下标变量或数组元素。每个数组元素的类型相同,所需的存储空间一致,因此在明确第一个数组元素的存储位置后,可以利用下标计算出其他数组元素的存储位置,从而达到快速访问的目的。李彤张强胡洁杜刚a0a1a2a3aa2数组名下标a2数组元素:胡洁牛刀小试一个数组的第一个元素的存储位置为1000(表示在第1000个字节处),每个元素所占空间大小为8个字节,则第5个元素的位置是?A.1000 B.1040 C.1032 D.1256C数组基本概念一维数组只有一个下标的数组称为一维数组,一维数组适合
2、用来表示具有一维空间的线性特征的数据序列。数组元素:d0,d1,d2,d3,d4.二维数组二维数组中的数据元素有行、列两个维度的元素,需要两个下标。数组元素:d00,d01,d02,d03,d04.数组基本概念二维数组在内存中也采用顺序存储,有行优先存储和列优先存储两种方式。数组名指向数组中第一行第一个元素存储的位置,其它数组元素可通过下标快速得到。行优先存储列优先存储0 010012200001020310111213.0 010012220010203001112131.数组的特性1.数组元素的数据类型相同。除非特别说明,数组指向的往往是静态数组。定义数组后,系统会根据每个数组元素的数据类
3、型和总元素个数,在内存中开辟一段地址连续且空间固定的存储空间。2.通过数组名和下标对数组元素的值进行访问。系统根据下标和数据类型自动计算内存地址以访问数组元素。3.存储空间固定不变。数组一旦创建,存储空间固定不变。即使数组中某些元素已经删除后,占用的空间仍会保留。静态数组动态数组数组定义时没有确定数据规模,可以在任何时候更改数据规模。数组的基本操作一致可以不一致顺序(连续)存储链式(不连续)存储数组列表当列表中存储的元素类型保持一致,并且只考虑逻辑结构时,可以把列表看成数组。数组的基本操作数组的创建一维数组直接创建:a=0,0,0间接创建:a=0*3列表生成式创建:a=0 for i in r
4、ange(3)二维数组ab直接创建:间接创建:列表生成式创建:b=0,0,0,0,0,0,0,0,0b=0*3*3 可以理解为:for i in range(3):a.append(0)数组的基本操作数组的创建bb=0*3*3b11=1b想象中的b数组实际上的b数组b数组的基本操作数组的创建一维数组直接创建:a=0,0,0间接创建:a=0*3列表生成式创建:a=0 for i in range(3)二维数组ab直接创建:间接创建:列表生成式创建:a=0,0,0,0,0,0,0,0,0a=0*3*3a=0 for i in range(3)for i in range(3)可以理解为:for i
5、 in range(3):a.append(0)可以理解为:for i in range(3):a.append(0 for i in range(3)数组元素的访问数组元素可通过数组名和下标快速定位其内存地址,因此可通过数组名和下标直接进行访问。一维数组数组名下标访问想要取到数组中第三个元素:想要访问数组中第2到第4个元素切片访问:二维数组数组名行下标列下标想要取到数组中第2行第3列的元素:访问第i行第j列的元素表示为:a2a1:4a12ai-1j-1数组元素的插入当需要在数组中某个位置插入一个新数据时,必须先将该位置及其后的所有数据依次向后移动一位,在保证顺序不变的前提下保存这些数据,最后
6、再修改该位置上的数据为新数据。静态数组元素的插入方法一a=1,2,3,4,5,0n=len(a)p=2x=90for i in range(n-1,p,-1):_n+=1print(a)ap=2x=9012345123451234590a5=a4 a4=a3 a3=a2 ai=ai-1 0 1 2 3 4 5ap=x静态数组一旦创建,存储空间固定不变静态数组元素的插入方法一ap=2x=90123451234123490a5=a4 a4=a3 a3=a2 0 1 2 3 4静态数组一旦创建,存储空间固定不变a=1,2,3,4,5,0n=len(a)p=2x=90for i in range(n-
7、1,p,-1):_n+=1print(a)ai=ai-1 ap=x动态数组元素的插入方法二对于数组a=1,2,3,4,51.list.insert(i,x)向数组中下标为i的位置插入元素x2.list.append(x)向数组的末尾插入元素x1,2,90,3,4,51,2,3,4,5,100静态数组元素的删除方法一a=1,2,3,4,5,6n=len(a)p=2for i in range(p,n-1):_n-=1print(a)ap=212345612456612456a2=a3 a3=a4 a4=a5 ai=ai+1 0 1 2 3 4 5思想:当需要在数组中某个位置中删除一个元素时,只需
8、将所有元素依次前移一位,然后将所有数组长度减一即可。del an-1 a.pop(n-1)/a.pop()动态数组元素的删除方法二对于数组a=1,2,3,4,5,61.list.pop(i)删除数组中下标为i的元素,若i省略则为最后一个2.del listi删除数组中下标为i的元素操作列表a数据a.pop()1,2,3,4,5操作列表a数据del a21,2,4,5,63.list.remove(x)删除数组中元素为x的第一个元素操作列表a数据a.remove(2)1,3,4,5,6车牌摇号系统实例(1)抽象与建模 用n表示有资格参加摇号的申请人总数,用序列luck存储编号,luck0,luc
9、k1,luckn1依次表示n个编号,其中的下标表示每个编号的位置,lucki的初值为第i+1位申请人的编号。使用变量m表示最终的车牌发放数量,计数器c表示已抽中人数,每当随机抽出一个有效的下标位置(如k)时,计数器c加1,输出申请人的编号后将该下标位置(如luck k)的值设为空串(表示该编号已被抽取),用来判断其后抽取的编号是否重复。重复该过程直至计数器c的值变为m,摇号结束。车牌摇号系统实例(2)设计算法由于该问题中数据规模可以预估,在处理过程中其数据规模保持不变,并需要根据随机产生的编号读取和修改对应的值,所以用数组来存储所有申请人的编号,下标表示该编号的位置。算法分为两个步骤:根据申请
10、人总数n,初始化数组luck,其数组下标代表位置,数组元素值为申请者编号(类型为字符串),并使用计数器c表示已抽中人数,初始化值为0。使用随机整数函数randint(a,b)随机产生一个位置k,若其作为数组下标对应的数组数据元素值为空串,则表示该编号已被抽取,该编号为重复号码,需要重新生成;否则,表示该编号为有效编号,计数器c加1,输出对应的数组元素并修改数组元素值为空串,表示该编号已被抽取。重复执行步骤,直至计数器c变为m,程序结束。车牌摇号系统实例车牌摇号系统列表函数版from random import randintluck=#新建列表csv_file=open(bh.csv,r,en
11、coding=utf-8)#打开存有编号的文件 bh.csvflines=csv_file.readlines()#将文件中所有编号按行读入 flines 中csv_file.close#关闭文件n=0for one_line in flines:tmp=one_line.strip(n)#将一个编号去除换行后赋给 tmp _#填加列表元素 n+=1#元素数组增加1个m=int(input(请输入发放数:)for i in range(m):k=randint(0,n-1)print(luckk)_#编号抽取后删除 n-=1#元素数组减少1个luck.append(tmp)luck.pop(k
12、)luck.insert(n,tmp)del luckk课堂小结课堂练习1.有如下Python程序段:a=0*4*3b=0*4 for i in range(3)a23=8b23=8则程序执行后,下列说法正确的是()A.a03的值为0,b03的值为0B.a03的值为0,b03的值为8C.a03的值为8,b03的值为0D.a03的值为8,b03的值为8C课堂练习2.有如下Python程序段:a0*3 for i in range(4)for i in range(len(a):for i in range(lena0):aij=i*len(a0)+j+1则程序执行后,a22的值为()A.5B.6C.8D.9D课堂练习3.阿福将我国部分省份及其省会城市存储到二维数组中,并依次输出各省及其省会名称,例如“湖南省的省会是长沙市”。相关代码如下:a=浙江省,杭州市,吉林省,长春市,湖南省,长沙市,湖北省,武汉市,江苏省,南京市,广东省,广州市for p in a:print(f的省会是)则划线和处分别应填写的代码为()A.p1;p0 B.p0;p1 C.ap0;ap1 D.p1;p2B