在 Python 中查找矩阵中所有元素的总和,除了给定单元格所在的行和/或列中的元素
假设我们有一个二维矩阵和一组单元格索引。单元格索引表示为 (i, j),其中 i 是行,j 是列,现在,对于每个给定的单元格索引 (i, j),我们必须找到所有矩阵元素的总和,不包括第 i 行和/或第 j 列中存在的元素。
所以,如果输入如下
2 | 2 | 3 |
4 | 5 | 7 |
6 | 4 | 3 |
单元格索引 = [(0, 0), (1, 1), (0, 1)],则输出将为 [19, 14, 20]
要解决此问题,我们将遵循以下步骤:
n := ind_arr 的大小
ans := 一个新的列表
对于 i 的范围从 0 到 n,执行以下操作
Sum := 0
row := ind_arr[i, 0]
col := ind_arr[i, 1]
对于 j 的范围从 0 到 mat 的行数,执行以下操作
对于 k 的范围从 0 到 map 的列数,执行以下操作
如果 j 与 row 不相同,并且 k 与 col 不相同,则
Sum := Sum + mat[j, k]
将 Sum 插入到 ans 的末尾
返回 ans
示例
让我们看看以下实现以更好地理解:
def show_sums(mat, ind_arr): n = len(ind_arr) ans = [] for i in range(0, n): Sum = 0 row = ind_arr[i][0] col = ind_arr[i][1] for j in range(0, len(mat)): for k in range(0, len(mat[0])): if j != row and k != col: Sum += mat[j][k] ans.append(Sum) return ans mat = [[2, 2, 3], [4, 5, 7], [6, 4, 3]] ind_arr = [(0, 0),(1, 1),(0, 1)] print(show_sums(mat, ind_arr))
输入
mat = [[2, 2, 3], [4, 5, 7], [6, 4, 3]] ind_arr = [(0, 0),(1, 1),(0, 1)
输出
[19, 14, 20]
广告