我需要编写一个函数来返回在任何给定矩阵中形成对角线的数字之和。
作为一个 Python 新手,我遇到了一个问题。这是我的代码:
def diagonal(matrix):
return sum([matrix[i][i] for i in range(len(matrix))])
我已经尝试了一段时间,但看不出有什么问题,因为它总是给我返回有关“列表索引超出范围”错误的报告。
我不允许导入numpy。
任何形式的帮助、提示、建议都将不胜感激。
请您参考如下方法:
如果您确定您的矩阵是矩形的(len(matrix[i]) 对于 matrix 中的所有列表都是相同的),那么您可以对您的列表求和仅当您的较小尺寸出现时:
def diagonal(matrix):
return sum([matrix[i][i] for i in range(min(len(matrix[0]),len(matrix)))])
len(matrix) 是矩阵的第一个维度,len(matrix[0]) 是第一个行向量的维度,这是第二个矩形矩阵的维度。
