下面是一个示例案例,演示如何使用嵌套循环在两种情况下求和:matrix = [[i+j for j in range(4)] for i in range(4)]
for row in matrix:
print(" ".join(list(map(str,row))))
totalSum = 0
for i in range(1,len(matrix)):
for j in range(i):
totalSum += matrix[i][j]
print("Below sum: ", totalSum)
totalSum = 0
for i in range(len(matrix)):
for j in range(i+1,len(matrix)):
totalSum += matrix[i][j]
print("Above sum: ", totalSum)
输出:
^{pr2}$
您也可以使用以下一行程序:
对角线下方:totalSum = sum([matrix[i][j] for i in range(1,len(matrix)) for j in range(i)])
对角线上方:totalSum = sum([matrix[i][j] for i in range(len(matrix)) for j in range(i+1,len(matrix))])
如果要求主对角线上下所有数字的总和,可以执行索引检查:totalSum = 0
for i in range(len(matrix)):
for j in range(len(matrix)):
if not i==j:
totalSum += matrix[i][j]
print("Sum: ", totalSum)
然而,另一种求和的方法(尽管不推荐)是求矩阵的总和和和主对角线的和,然后执行减法以找到最终和:matrix = [[i+j for j in range(4)] for i in range(4)]
for row in matrix:
print(" ".join(list(map(str,row))))
matrixSum = sum([sum(elem for elem in row) for row in matrix])
diagonalSum = sum([matrix[i][i] for i in range(len(matrix))])
finalSum = matrixSum - diagonalSum
print("Matrix sum: ", matrixSum)
print("Diagonal sum: ", diagonalSum)
print("Final sum: ", finalSum)
输出:0 1 2 3
1 2 3 4
2 3 4 5
3 4 5 6
Matrix sum: 48
Diagonal sum: 12
Final sum: 36
注意:注意print语句中的语法,因为您使用的是python2,我的答案是python3。在