“线性表”(Linear List)是数学应用在计算机科学中的一种相当简单与基本的数据结构。按照内存存储方式可分为静态数据结构(也称为“密集表”)和动态数据结构(又称为“链表”)。
静态数据结构设计时相当简单,而且读取与修改表中任意一个元素的时间都是固定的。缺点是删除和插入数据时,需要移动大量的数据;动态数据结构的内存时在程序执行时才进行分配的,所以不需要事先声明,这样能充分节省内存。缺点是在设计数据结构时较为麻烦,另外在查找数据时,也无法像静态数据一般可以随机读取,必须直到按顺序找到该数据为止。
例1:使用Python的一维列表来记录学生的分数,使用for循环打印出每笔学生成绩并计算分数的总和。
Score = [87, 66, 90, 65, 70]
Total_Score = 0
for count in range(5):
print("第%d位学生的分数:%d" %(count+1, Score[count]))
Total_Score += Score[count]
print("---------------------------")
print('5位学生的总分:%d' %Total_Score)
【执行结果】
第1位学生的分数:87
第2位学生的分数:66
第3位学生的分数:90
第4位学生的分数:65
第5位学生的分数:70
---------------------------
5位学生的总分:378
一、二维数组
在实际的计算机内存中时无法以矩阵方式存储的,仍然是以线性方式来存储二维数组,就是把它视为一维数组的扩展来处理。一般就是按行或者按列的方式进行表示。在python中,列表中可以有列表,这种情况就称为二维列表,要读取二维列表的数据可以通过for循环来完成。简单来讲, 二维列表就是列表中元素是列表。
二、三维数组
基本上三维数组的表示法和二维数组一样,都可视为一维数组的延伸。如果数组是三维数组,就可以看作是一个立方体。
例2,设计一个python程序,利用嵌套循环来找出三维数组中所存储数组中的最小值。
num = [[[33, 45, 67], [23, 71, 66], [55, 38, 66]],
[[21, 9, 15], [38, 69, 18], [90, 101, 89]]]
value = num[0][0][0] #设置value为num数组的第一个元素
for i in range(2):
for j in range(3):
for k in range(3):
if (value>=num[i][j][k]):
value = num[i][j][k] #利用三重循环找出最小值
print("最小值 = %d" %value)
【执行结果】
最小值 = 9
定义一个3x3的矩阵
arr = [[None] * 3 for row in range(3)]
print(arr)
【执行结果】
[[None, None, None], [None, None, None], [None, None, None]]
三、数组与多项式
如何将一个多项式用数组结构存储在计算机中?
例3 设计一个python程序,并进行两个多项式的加法运算。
ITEMS = 6
def PrintPoly(Poly, items):
MaxExp = Poly[0]
for i in range(1,Poly[0]+2):
MaxExp -= 1
if Poly[i] !=0:
if (MaxExp+1)!=0:
print('%dX^%d' %(Poly[i], MaxExp+1), end='')
else:
print('%d' %Poly[i], end='')
if MaxExp>=0:
print('%c' %'+', end='')
print()
def PolySum(Poly1, Poly2):
result=[None]*ITEMS
result[0] = Poly1[0]
for i in range(1,Poly1[0]+2):
result[i] = Poly1[i] +Poly2[i]
PrintPoly(result, ITEMS)
PolyA = [4,3,7,0,6,2]
PolyB = [4,1,5,2,0,9]
PrintPoly(PolyA,ITEMS)
PrintPoly(PolyB,ITEMS)
PolySum(PolyA,PolyB)
【运行结果】
3X^4+7X^3+6X^1+2
1X^4+5X^3+2X^2+9
4X^4+12X^3+2X^2+6X^1+11