(共15张PPT)
数组及其应用
册 别:选择性必修1
学 科:高中信息技术(浙教版)
数组是由相同类型的变量构成一个序列。
一、数组的概念
数组名d:
下标
数组元素
数组的分类:
一维数组:a[i]
二维数组:a[i][j]
数组在内存中存储的结构简单,创建数组时系统会分配一块连续的存储空间,每个数组元素按照下标顺序依次存储。
0 1 2 3 4
0 0 1 0 0 0
1 1 2 2 0 0
2 0 2 0 1 0
3 0 2 0 0 0
4 0 0 0 0 0
数组d:
列下标 j
行下标 i
数组元素:a[0][1],a[0][1],...,a[4][4]
二维数组的存储方式:
行优先存储方式
列优先存储方式
0
1
0
0
0
1
2
2
...
[0][0]
[0][1]
[0][2]
[0][3]
[0][4]
[1][0]
[1][1]
[1][2]
...
行优先存储
一、数组的概念
数组d
下标
二、数组的基本操作:创建
在Python语言中没有数组这种结构,但是有更灵活的数据结构:列表。
创建列表实现一维数组:
(1)使用 [ ] 直接创建
a = [1, 2, 3]
(2)使用 list( ) 函数创建
a = list( ‘Key’ )
(3)使用 * 创建
a = [ 0 ] * 4
(4)使用 for 循环创建
a = [ 0 for i in range( 4 )]
a = [ 1, 2, 3 ]
a = [ “K”,”e”,”y” ]
a = [ 0, 0, 0, 0 ]
a = [ 0, 0, 0, 0 ]
创建列表实现二维数组:
(1)使用 [ ] 直接创建(直接定义)
a = [[1, 2, 3],[4, 5, 6]]
(2)使用 for 循环创建(间接定义)
a = [[ 0 for i in range( 3 )] for i in range( 2 )]
(3)使用 * 创建(浅拷贝)
a = [[ 0 ] * 3] * 2
a = [[ 1, 2, 3 ],
[ 4, 5, 6] ]
a = [[0 , 0, 0],
[ 0, 0, 0] ]
a = [[ 0, 0, 0],
[ 0, 0, 0] ]
二、数组的基本操作:创建
二、数组的基本操作:访问
二维数组
例如:a = [ 1, 2, 3, 4, 5, 6]
a[ 0 ] = 1
a[ 3 ] = 4
一维数组
例如:a = [ [1, 2, 3], [4, 5, 6] ]
a[ 0 ][ 1 ] = 2
a[ 1 ][ 2 ] = 6
二、数组的基本操作:插入与删除
data1 0
data2 1
data3 2
data4 3
data5 4
5
下标
插入新数据前的数组d
新数据插入位置
data1 0
data2 1
2
data3 3
data4 4
data5 5
data1 0
data2 1
new_data 2
data3 3
data4 4
data5 5
移动数据后的数组d
插入新数据后的数组d
下标
下标
如何用程序实现该过程?
自然语言描述:
1、确定插入位置
2、从最后一个数据开始,依次向后移动一位
3、新数据存入指定位置
d[5]=d[4]
d[4]=d[3]
d[3]=d[2]
d[2]=new_data
二、数组的基本操作:插入与删除
from random import randint
d=[0]*5
for i in range(0,4):
d[i]=randint(0,10)
print(d[i])
t=int(input("请输入插入位置:"))
new_data=int(input("请输入插入的值:"))
for i in range(4,t,-1):
d[i]=d[i-1]
d[t]=new_data
d[5]=d[4]
d[4]=d[3]
d[3]=d[2]
d[2]=new_data
d[i-1]=new_data
利用列表模拟实现数组的操作
二、数组的基本操作:插入与删除
1、在数组中插入新数据,是否可以先插入数据,再移动其他数组元素?
2、移动数组元素时,其顺序应该是怎样的?为什么一定要这样的顺序?
3、如何实现在数组中删除一个元素?
二、数组的基本操作:插入与删除
1、时间效率低
2、可能会因为超出数组元素数量而出错
3、删数时会浪费存储空间
三、Python中列表常用函数与方法
四、例题
杨辉三角,是二项式系数在三角形中的一种几何排列,在我国南宋数学家杨辉1261年所编写的《详解九章算法》一书中出现。我们可以把杨辉三角看作这样的图形:最左侧一列数字和右边的斜边数字均为1,内部其他位置上的每个数字均为上一行同一列的数字与上一行前一列数字之和,前8行的杨辉三角如图所示。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
四、例题
杨辉三角中的数据,可以使用一维数组存储,如图所示。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 …
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 …
1 2 3 4 5
一维数组:pa 数组下标
行号
(1)用一维数组Pa来存储和处理数据,初始化数组中所有元素值均为1,然后依次处理下表中数组元素的值,并将表中的数据补充完整。
待处理顺序 所在行号 待处理数组元素 计算公式
1 3 pa[4] pa[1]+pa[2]
2 4 pa[7] ①
3 4 pa[8] pa[4]+pa[5]
4 5 ② pa[6]+pa[7]
… … … …
pa[3]+pa[4]
pa[11]
四、例题
(2)实现上述功能的代码如下,请在划线处填人合适的代码。
n=int(input("请输入行数n="))
pa=[1]*100 #定义数组pa大小为
100
k=1 #变量k存储上一行的下
标位置
for i in range (2,n):
t=k+i+1 #变量t存储当前行的
下标起始位置
for j in range(i-1):
pa[t+j]=pa[k+j]+_____________
k=k+i
k=0
for i in range(n): #输出第0到
n-1共n行数据
s=""
for j in range(i+1):
s=s+""+___________________
k+=1
print(s)
pa[k+j+1]
str(pa[k])
同学们,再见