数组(python3)

# 数组--------------------
# 定义一个[n,m]的二维数组
n, m = 3, 4
array_2 = [[None for i in range(n)] for i in range(m)]
# 定义一个[x,y,x]的三维数组
x, y, z = 2, 3, 4
array_3 = [[[None for i in range(x)] for i in range(y)] for i in range(z)]


# 求[m,n]两矩阵和
def add_matrix_2(a, b, m, n):  # a和b必须矩阵的行列数量相同
    sum = [[None for i in range(m)] for j in range(n)]
    for i in range(0, m):
        for j in range(0, n):
            sum[m][n] = a[m][n] + b[m][n]
    return sum


# 二维矩阵相乘
def multiply_matrix_2(a, b, a_line, a_column, b_line, b_column):  # a*b矩阵
    if a_line != b_column or a_column != b_line:
        print('不满足条件\n')
        return None
    else:
        multiply_matrix = [[None for i in range(b_column)] for j in range(a_line)]
        term = 0
        for x in range(a_line):
            for y in range(a_column):
                term += a[a_line][a_column] * b[a_column][a_line]
            multiply_matrix[a_line][a_column] = term
        return multiply_matrix


# 二维矩阵转置
def transposition_matrix_2(a, m, n):
    a_t = [[None for i in range(m)] for j in range(n)]
    for i in range(m):
        for j in range(n):
            a_t[m][n] = a[n][m]
    return a_t


# 稀疏矩阵压缩
def compress_matrix_2(a, m, n):
    rar_matrix[0][0] = m  # 行数
    rar_matrix[0][1] = n  # 列数
    temp = 1
    flag = 0  # 为0的个数
    for i in range(m):
        for j in range(n):
            if a[m][n] != 0:
                rar_matrix[temp][0] = i
                rar_matrix[temp][1] = j
                rar_matrix[temp][2] = a[m][n]
                temp += 1
    rar_matrix[0][2] = temp
    return rar_matrix


# 上三角矩阵转列表
def change_matrix_2_to_list(a, m, n):
    list_1 = []
    for i in range(m):
        for j in range(n):
            if a[m][n] != 0:
                list_1.append(a[m][n])
    return list_1

猜你喜欢

转载自blog.csdn.net/zhangyu4863/article/details/80787235