Python 试图得到对角线和
试图在6创建的列表中的7个列表中按对角线方向求和。因此,假设列表是这样的,Python 试图得到对角线和,python,python-2.7,sum,diagonal,Python,Python 2.7,Sum,Diagonal,试图在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.app
[[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))
#6
def随机列表:
b=s
列表1=[]
当s>0时:
子列表=[]
对于范围(0,b)内的x:
附加子列表(随机范围(-100101))
列表1.append(子列表)
s-=1
返回列表1
#打印(随机列表(5))
#7
def对角线和(x):
a=随机列表(x)
计数=0
印刷品(a)
对于a中的b:
当计数以获得对角线元素时,您在第一行中取第一个,在第二行中取第二个。。。第n行中的第n个
def diagonalsum(x):
a = randomlists(x)
return sum(row[i] for i, row in enumerate(a))
使用普通for循环读取的不那么简洁的替代方法
def diagonalsum(x):
a = randomlists(x)
result=0
for i, row in enumerate(a):
result += row[i]
return result
假设矩阵为正方形,这是使用循环的标准解决方案:
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)))
使用numpy.trace:。它返回沿数组对角线的和
import numpy as np
M = np.array([[2,3,1],[1,1,1],[5,6,4]])
print(M.trace())
#7
我不清楚row和enumerate是什么,我们还不知道它是内置在python中的,还是那些只是程序中的变量?enumerate是python内置函数,请参见。调用sum
中的术语是一个所谓的生成器表达式,它类似于生成列表的for循环row
是一个临时变量,当您在其上循环时,它被设置为一个接一个的a
的内部列表。