内容正文:
数 组
1、存储模式:顺序存储和非顺序存储
计算机中数据的存储模式分为顺序存储和非顺序存储,所有数据结构的存储也可以分为这两类,而作为常用数据结构中的数组与链表,就是这两种存储模式的典型代表,其他的数据结构都是在这两种数据结构的基础上构建的。
2、浅拷贝(联动):
3、一维数组 和 二维数组
4、静态数组 和 动态数组
qp=[[0]*4]*4
0 2 0 1
1 0 2 2
b[0] b[1] b[2] b[3] b[4]
0 1 0 0
一维数组
0 1 0 0
二维数组
0 2 0 0
0 空白
1 黑子
2 白子
0 1 0 0
1 2 2 0
0 2 0 1
0 2 0 0
数组名:qp 列位置下标:
0 1 2 3
行位置下标:0
1
2
3
数组元素:qp[0][0], qp[0][1],……, qp[3][3],
0 0 0 0
1 2 2 0
0 2 0 1
0 2 0 0
行下标i从0到4,
列下标j从0到5,
每个元素占8个字节,
问:存储该数组
所需要的空间为多少?
qp=[[0]*4]*4
规模较小
规模较大
9行8列
a行b列
请用代码呈现
qp=[ [0 for i in range(9)] for j in range(8) ]
qp=[ [0 for i in range(8)] for j in range(9) ]
函数和方法 功能 实例
len(list) 统计列表list中元素个数 list=[]
print(len(list))
输出为:0
list.append(x) 在列表中list末尾添加元素x list=[22,33,44]
list.append(55)
print(list)
输出为:[22,33,44,55]
list.insert(i,x) 在列表list中下标为i处插入元素x list=[“A”, ”B”, ”D”]
list.insert(2,”C”)
print(list)
输出为:[“A”, ”B”, ”C”,”D”]
list.pop(i) 将列表list中下标为i的元素删除,若i不指定,默认为-1,即最后一个 list=[“A”, ”B”, ”C”,”D”]
list.pop(2)
print(list)
输出为:[“A”, ”B”, ”D”]
函数和方法 功能 实例
len(list) 统计列表list中元素个数 list=[]
print(len(list))
输出为:0
list.append(x) 在列表中list末尾添加元素x list=[22,33,44]
list.append(55)
print(list)
输出为:[22,33,44,55]
list.insert(i,x) 在列表list中下标为i处插入元素x list=[“A”, ”B”, ”D”]
list.insert(2,”C”)
print(list)
输出为:[“A”, ”B”, ”C”,”D”]
list.pop(i) 将列表list中下标为i的元素删除,若i不指定,默认为-1,即最后一个 list=[“A”, ”B”, ”C”,”D”]
list.pop(2)
print(list)
输出为:[“A”, ”B”, ”D”]
使用以上列表的函数和方法后,可以将由列表模拟实现的数组视为动态数组,其中的增加、删除数组元素的操作由相应的函数实现。
数组听写
1.统计数组a的元素个数函数是 ① .
2.在数组a中下标为k处插入元素x,
方法一:用函数表达式是 ② .
方法二:移动数据
a=a+[0]
for i in range(len(a)-1, ③ ,-1):
④
a[k]=x
3.将数组a中下标为k的元素删除的函数表达式是 ⑤ .
1 2 3 4 5 6
20 21 22 23 24 7
19 32 33 34 25 8
18 31 36 35 26 9
17 30 29 28 27 10
16 15 14 13 12 11
蛇形矩阵,是矩阵的一种,常被应用在编程题目与数学数列中,请根据右图,将程序补充完整
1 2 3 4 5 6
20 21 22 23 24 7
19 32 33 34 25 8
18 31 36 35 26 9
17 30 29 28 27 10
16 15 14 13 12 11
def snake_matrix(n):
a=[[0 for i in range(n)] for j in range(n)]
left,right,low,high=0,n-1,0,n-1
s=1
while left<=right:
for i in range(left,right+1):
#顺序横向
a[low][i]=s
s+=1
low+=1 #下移一行
for i in range(low,high+1):
#逆序横向
a[i][right]=s
s+=1
right-=1 #左移一位
#主函数部分
size=6 #蛇形矩阵大小
a=snake_matrix(size) #调用生成蛇形矩阵的函数
for i in range(size): #输出蛇形矩阵
for j in range(size):
print(f"{a[i][j]:3}",end="")
print()
for i in range(right, left - 1,-1):
# 逆序横向
a[high][i] = s
s += 1
high -= 1 # 上移一行
for i in range(high, low - 1,-1):
# 逆序纵向
a[i][left] = s
s+= 1
left+=1
# 右移一位
return a
#逆序横向
#上移一行
(1)
(2)
(3)
(4)
蛇形矩阵如何用代码实现
①
思路:
1观看视频1-36逐步累加,每运行一次+1,结合代码,推出?
2变量 left,right 列
low, high 行
3结合右图(1)是列的变化,所以range( Left >> Right )
图(2)是行的变化,所以range( low >> high )
……
4图(1)运行完以后,少了1行,所以low+=1
图(2)
5还有一个空自己分析
(1)
(3)
(2)
(4)
1 2 3 4 5 6
20 21 22 23 24 7
19 32 33 34 25 8
18 31 36 35 26 9
17 30 29 28 27 10
16 15 14 13 12 11
def snake_matrix(n):
a=[[0 for i in range(n)] for j in range(n)]
left,right,low,high=0,n-1,0,n-1
s=1
while left<=right:
for i in range(left,right+1):
#顺序横向
a[low][i]=s
s+=1
low+=1 #下移一行
for i in range(low,high+1):
#逆序横向
a[i][right]=s
s+=1
right-=1 #左移一位
#主函数部分
size=6 #蛇形矩阵大小
a=snake_matrix(size) #调用生成蛇形矩阵的函数
for i in range(size): #输出蛇形矩阵
for j in range(size):
print(f"{a[i][j]:3}",end="")
print()
for i in range(right, left - 1,-1):
# 逆序横向
a[high][i] = s
s += 1
high -= 1 # 上移一行
for i in range(high, low - 1,-1):
# 逆序纵向
a[i][left] = s
s+= 1
left+=1
# 右移一位
return a
#逆序横向
#上移一行
(1)
(2)
(3)
(4)
C
C
C
i==j or i==n-1-j
grid[i][j]!=0
Lavf57.83.100
$$