尝试在#6创建的列表的#7中对角获取总和。所以说清单是[[2,3,1],[1,1,1],[5,6,4]]
,总和是2 + 1 + 4
#6
def randomlists(s):
b=s
list1 = []
while s>0:
sublist = []
for x in range(0,b):
sublist.append(randrange(-100,101))
list1.append(sublist)
s-=1
return list1
#print(randomlists(5))
#7
def diagonalsum(x):
a=randomlists(x)
count=0
print (a)
for b in a:
while count<x:
d=a[0]
b=a[1]
c=a[2]
print (a[(count)])
count+=1
return d+b+c
print (diagonalsum(3))
答案 0 :(得分:6)
假设矩阵是方形的,这是使用循环的标准解决方案:
def diagonalsum(m):
count = 0
for i in xrange(0, len(m)):
count += m[i][i]
return count
...可以使用生成器表达式和sum
函数以更简洁的方式编写:
def diagonalsum(m):
return sum(m[i][i] for i in xrange(len(m)))
答案 1 :(得分:2)
使用numpy.trace:http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.trace.html。它返回数组对角线的总和。
import numpy as np
M = np.array([[2,3,1],[1,1,1],[5,6,4]])
print(M.trace())
#7
答案 2 :(得分:0)
要获得对角线元素,您将获取第一行中的第一行,第二行中的第二行...第n行中的第n行。
def diagonalsum(x):
a = randomlists(x)
return sum(row[i] for i, row in enumerate(a))
使用普通进行循环读取的不那么简洁的替代方案
def diagonalsum(x):
a = randomlists(x)
result=0
for i, row in enumerate(a):
result += row[i]
return result