Python 数据结构 ---- 01 数组结构

1. 一维数组
# 一维数组,数组元素用中括号括起来。
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))

C:\Users\Amber\AppData\Local\Programs\Python\Python36\python.exe C:/Users/Amber/Desktop/CH02_01.py
第 1 位学生的分数:87
第 2 位学生的分数:66
第 3 位学生的分数:90
第 4 位学生的分数:65
第 5 位学生的分数:70
--------------------------------
5位学生的总分:378 

2 二维数组

#计算二姐行列式
N=2
# 声明2x2的数组arr,并将所有元素设置为None
arr = [[None] * N for row in range(N)]
print('|a1 b1|')
print('|a2 b2|')
arr[0][0] = input('请输入a1:')
arr[0][1] = input('请输入b1:')
arr[1][0] = input('请输入a2:')
arr[1][1] = input('请输入b2:')
# 求二阶行列式的值
result = int(arr[0][0]) * int(arr[1][1]) - int(arr[0][1]) * int(arr[1][0])
print('|%d %d|' %(int(arr[0][0]),int(arr[0][1])))
print('|%d %d|' %(int(arr[1][0]),int(arr[1][1])))
print('行列式的值=%d'%result)

 C:\Users\Amber\AppData\Local\Programs\Python\Python36\python.exe C:/Users/Amber/Desktop/CH02_02.py
|a1 b1|
|a2 b2|
请输入a1:5
请输入b1:9
请输入a2:3
请输入b2:4
|5 9|
|3 4|
行列式的值=-7

3. 三维数组

# 声明三维数组
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为第一个元素
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)

C:\Users\Amber\AppData\Local\Programs\Python\Python36\python.exe C:/Users/Amber/Desktop/CH02_03.py
最小值= 9

4. 矩阵加法

A = [[1, 3, 5], [7, 9, 11], [13, 15, 17]] #二维数组的声明
B = [[9, 8, 7], [6, 5, 4], [3, 2, 1]] #二维数组的声明
N = 3
C = [[None] * N for row in range(N)]

for i in range(3):
    for j in range(3):
        C[i][j] = A[i][j] + B[i][j] # 矩阵C = 矩阵A+矩阵B
print('[矩阵A和矩阵B相加的结果]') #打印A+B的内容
for i in range(3):
    for j in range(3):
        print('%d' %C[i][j], end ='\t')
    print()

C:\Users\Amber\AppData\Local\Programs\Python\Python36\python.exe C:/Users/Amber/Desktop/CH02_04.py
[矩阵A和矩阵B相加的结果]
10    11    12    
13    14    15    
16    17    18   

5. 矩阵乘法

# 两个矩阵相乘
#global C
def MatrixMultiply(arrA, arrB, arrC, M, N, P):
    global C
    if M <= 0 or N <= 0 or P <= 0:
        print('[错误:维数M,N,P必须大于0]')
        return
    for i in range(M):
        for j in range(P):
            Temp = 0
            for k in range(N):
                Temp = Temp + int(arrA[i*N+k]) * int(arrB[k*P+j])
            arrC[i*P+j] = Temp

print('请输入矩阵A的维度(M,N):')
M = int(input('M= '))
N = int(input('N= '))
A = [None]*M*N #声明大小为MxN的列表A

print('【请输入矩阵A的各个元素】')
for i in range(M):
    for j in range(N):
        A[i*N+j] = input('a%d%d='%(i,j))

print('请输入矩阵B的维度(N,P):')
N = int(input('N= '))
P = int(input('P= '))

B = [None]*N*P  #声明大小为NxP的列表B

print('【请输入矩阵B的各个元素】')
for i in range(N):
    for j in range(P):
        B[i*P+j] = input('b%d%d='%(i,j))

C = [None]*M*P  #声明大小为MxP的列表C
MatrixMultiply(A,B,C,M,N,P)
print('[A*B的结果是]')
for i in range(M):
    for j in range(P):
        print('%d'%C[i*P+j],end='\t')
    print()

C:\Users\Amber\AppData\Local\Programs\Python\Python36\python.exe C:/Users/Amber/Desktop/CH02_5.py
请输入矩阵A的维度(M,N):
M= 2
N= 3
【请输入矩阵A的各个元素】
a00=5
a01=6
a02=3
a10=8
a11=4
a12=8
请输入矩阵B的维度(N,P):
N= 3
P= 2
【请输入矩阵B的各个元素】
b00=4
b01=6
b10=5
b11=2
b20=8
b21=6
[A*B的结果是]
74    60    
116    104   

6. 矩阵转置

# 矩阵转置
arrA = [[1,2,3,4], [5,6,7,8],[9,10,11,12],[13,14,15,16]]
N = 4
# 声明4x4数据arr
arrB = [[None]*N for row in range(N)]

print('[原矩阵内容]')
for i in range(4):
    for j in range(4):
        print('%d'%arrA[i][j],end = '\t')
    print()

#进行矩阵转置的操作
for i in range(4):
    for j in range(4):
        arrB[i][j]=arrA[j][i]

print('[转置后的矩阵内容]')
for i in range(4):
    for j in range(4):
        print('%d'%arrB[i][j],end='\t')
    print()
扫描二维码关注公众号,回复: 2626114 查看本文章

C:\Users\Amber\AppData\Local\Programs\Python\Python36\python.exe C:/Users/Amber/Desktop/test.py
[原矩阵内容]
1    2    3    4    
5    6    7    8    
9    10    11    12    
13    14    15    16    
[转置后的矩阵内容]
1    5    9    13    
2    6    10    14    
3    7    11    15    
4    8    12    16   

7. 稀疏矩阵

#稀疏矩阵
NONZERO=0
temp = 1
Sparse = [[15,0,0,22,0,-15],[0,11,3,0,0,0],[0,0,0,-6,0,0],[0,0,0,0,0,0],[91,0,0,0,0,0],[0,0,28,0,0,0]] #声明稀疏矩阵,矩阵所有元素设为0
Compress=[[None]*3 for row in range(9)] #声明压缩矩阵

print('稀疏矩阵的各个元素') #打印出稀疏矩阵的各个元素
for i in range(6):
    for j in range(6):
        print('[%d]'%Sparse[i][j], end='\t')
        if Sparse[i][j] != 0:
            NONZERO = NONZERO + 1
    print()

# Start to compress Sparse matrix
Compress[0][0] = 6
Compress[0][1] = 6
Compress[0][2] = NONZERO

for i in range(6):
    for j in range(6):
        if Sparse[i][j] !=0 :
            Compress[temp][0]=i
            Compress[temp][1]=j
            Compress[temp][2]=Sparse[i][j]
            temp=temp+1

print('Sparse matrix after Compression')
for i in range(NONZERO + 1):
    for j in range(3):
        print('[%d]'%Compress[i][j], end=' ')
    print()

C:\Users\Amber\AppData\Local\Programs\Python\Python36\python.exe C:/Python/Exercises/CH02_07.py
稀疏矩阵的各个元素
[15]    [0]    [0]    [22]    [0]    [-15]    
[0]    [11]    [3]    [0]    [0]    [0]    
[0]    [0]    [0]    [-6]    [0]    [0]    
[0]    [0]    [0]    [0]    [0]    [0]    
[91]    [0]    [0]    [0]    [0]    [0]    
[0]    [0]    [28]    [0]    [0]    [0]    
Sparse matrix after Compression
[6] [6] [8]
[0] [0] [15]
[0] [3] [22]
[0] [5] [-15]
[1] [1] [11]
[1] [2] [3]
[2] [3] [-6]
[4] [0] [91]
[5] [2] [28]

8. 上三角矩阵

# upper angular matrix
global ARRAY_SIZE  # Array dimensions
ARRAY_SIZE = 5
# one dimension array declaration
num = int(ARRAY_SIZE * (1+ARRAY_SIZE)/2)
B = [None]*(num+1)

def getValue(i,j):
    index = int(ARRAY_SIZE*i - i*(i+1)/2 + j)
    return B[index]

#Upper triangular matrix content
A=[[7,8,12,21,9],
   [0,5,14,17,6],
   [0,0,7,23,24],
   [0,0,0,32,19],
   [0,0,0,0,8]]

print('===================================================')
print('Upper Triangular Matrix:')
for i in range(ARRAY_SIZE):
    for j in range(ARRAY_SIZE):
        print('%d'%A[i][j],end='\t')
    print()

#Compress Upper Triangular Matrix to One-Dimension Matrix
index = 0
for i in range(ARRAY_SIZE):
    for j in range(ARRAY_SIZE):
        if (A[i][j] != 0):
            index = index+1
            B[index]=A[i][j]

print('===================================================')
print('Show as one-dimension array')
print('[',end='')
for i in range(ARRAY_SIZE):
    for j in range(i+1,ARRAY_SIZE+1):
        print('%d'%getValue(i,j),end='\t')
print(']')

C:\Users\Amber\AppData\Local\Programs\Python\Python36\python.exe "C:\Program Files\JetBrains\PyCharm Community Edition 181.2784.25\helpers\pydev\pydevd.py" --multiproc --qt-support=auto --client 127.0.0.1 --port 57270 --file C:/Python/Exercises/CH02_08.py
pydev debugger: process 2880 is connecting

Connected to pydev debugger (build 181.2784.25)
===================================================
Upper Triangular Matrix:
7    8    12    21    9    
0    5    14    17    6    
0    0    7    23    24    
0    0    0    32    19    
0    0    0    0    8    
===================================================
Show as one-dimension array
[7    8    12    21    9    5    14    17    6    7    23    24    32    19    8    ]

9. 下三角矩阵

#Lower triangular matrix
global ARRAY_SIZE  # Array dimensions
ARRAY_SIZE = 5
# one dimension array declaration
num = int(ARRAY_SIZE * (1+ARRAY_SIZE)/2)
B = [None]*(num+1)

def getValue(i,j):
    index = int(ARRAY_SIZE*i - i*(i+1)/2 + j)
    return B[index]

#Upper triangular matrix content
A=[[76,0,0,0,0],
   [54,51,0,0,0],
   [23,8,26,0,0],
   [43,35,28,18,0],
   [12,9,14,35,46]]

print('===================================================')
print('Lower Triangular Matrix:')
for i in range(ARRAY_SIZE):
    for j in range(ARRAY_SIZE):
        print('%d'%A[i][j],end='\t')
    print()

#Compress Lower Triangular Matrix to One-Dimension Matrix
index = 0
for i in range(ARRAY_SIZE):
    for j in range(ARRAY_SIZE):
        if (A[i][j] != 0):
            index = index+1
            B[index]=A[i][j]

print('===================================================')
print('Show as one-dimension array')
print('[',end='')
for i in range(ARRAY_SIZE):
    for j in range(i+1,ARRAY_SIZE+1):
        print('%d'%getValue(i,j),end='\t')
print(']')

C:\Users\Amber\AppData\Local\Programs\Python\Python36\python.exe C:/Python/Exercises/CH02_09.py
===================================================
Lower Triangular Matrix:
76    0    0    0    0    
54    51    0    0    0    
23    8    26    0    0    
43    35    28    18    0    
12    9    14    35    46    
===================================================
Show as one-dimension array
[76    54    51    23    8    26    43    35    28    18    12    9    14    35    46    ]

10. 多项式

# 将两个最高次方相等的多项式相加后输出结果
ITEMS=6
def PrintPoly(Poly,items):
    MaxExp=Poly[0]
    for i in range(1,Poly[0]+2):
        MaxExp=MaxExp-1
        if Poly[i]!=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]
print('多项式A=> ',end='')
PrintPoly(PolyA,ITEMS)
print('多项式B=> ',end='')
PrintPoly(PolyB,ITEMS)
print('多项式A+B=> ',end='')
PolySum(PolyA,PolyB)

C:\Users\Amber\AppData\Local\Programs\Python\Python36\python.exe C:/Python/Exercises/CH02_10.py
多项式A=>  3X^4 + 7X^3 + 0+ 6X^1 + 2X^0
多项式B=>  1X^4 + 5X^3 + 2X^2 + 0+ 9X^0
多项式A+B=>  4X^4 + 12X^3 + 2X^2 + 6X^1 + 11X^0

猜你喜欢

转载自blog.csdn.net/f2157120/article/details/81351236