【发布时间】:2014-10-12 03:24:27
【问题描述】:
我正在使用 numpy.我的任务是:
"编写一个函数 sumOfDiagonal,它有一个类型为列表的参数。列表是一个 4x4 二维 整数数组(4 行 4 列整数)。该函数返回整数的总和 从左上角到右下角的对角线位置。该函数应为列表返回 14 以下。您可以假设列表始终是 4x4 二维整数数组。 4 9 2 5
3 1 10 6
7 2 5 1
8 8 1 4"
我在这个问题上非常挣扎。我尝试了几种方法,但一无所获。一开始我试过:
def sumOfDiagonal (list1: list):
summation1=[i.split(", ")[0] for i in list1]
返回(求和1)
print (sumOfDiagonal ([[4, 9, 2, 5], [3, 1, 10, 6], [7, 2, 5, 1], [8, 8, 1, 4,]]) )
因为我在另一个线程上看到应该可以做到这一点,并且我认为我可以将输入数组按各个列表拆分,以获得有用的第一次开始,但我收到一个关于没有属性的错误......我刚刚又试了一次,调用外部函数时出错
然后我在另一个方向上做了几次其他尝试。我现在拥有的是:
def sumOfDiagonal (list1: list):
i=0
j=0
summation1=0
for row in list1:
for i in row:
for column in list1:
for j in column:
summation1=list1[i j],row[i]+summation1
返回(求和1)
print (sumOfDiagonal ([[4, 9, 2, 5], [3, 1, 10, 6], [7, 2, 5, 1], [8, 8, 1, 4,]]) )
这显然是行不通的,但我之前有一些版本没有语法错误,只有一个逻辑错误(它输出 44)
我觉得是这样的
def sumOfDiagonal (list1: list):
i=0
j=0
summation1=0
summation2=0
for row in list1:
summation1=row[1]+summation1
i+=i
for column in list1:
summation2=column[i]+summation2
i+=i
返回 (summation1+summation2)
print (sumOfDiagonal ([[4, 9, 2, 5], [3, 1, 10, 6], [7, 2, 5, 1], [8, 8, 1, 4,]]) )
我是否已经接近正确了,我该如何纠正我所拥有的大量失败?
在此先感谢
【问题讨论】:
-
你的第一行提到了
numpy,但是你根本没有使用它。如果数组确实是numpy.array,那么得到对角线是微不足道的。如果是多行字符串,我建议将其转换为数组。列表列表中的对角线也不应该很难。
标签: python arrays numpy matrix diagonal