1

此函数接收表示为行列表的数字矩阵,其中每一行又是一个列表。假设它是一个方阵:所有行都具有相同的长度,并且每行中的行数与元素数一样多。还假设矩阵的维度至少为 2 x 2(即矩阵至少有 2 行,每行有 2 个元素) 该函数应返回一个包含与行数一样多的元素的列表。结果列表中的元素 i 应该具有第 i 行中的值的总和。

例如,如果矩阵是

1   2   3
10  20  30
100 200 300

那么这个函数应该返回列表[6,60,600]

也就是说, addValuesInAllRows( [ [1,2,3], [10,20,30], [100,200,300] ] ) 应该返回[6,60,600]

是不是很相似,但是您将如何单独总结列表

4

3 回答 3

4
matrix = [ [1,2,3], [10,20,30], [100,200,300] ]
print [sum(row) for row in zip(*matrix)]
于 2012-11-23T04:25:26.247 回答
2

列总和

>>> def addValuesInAllCols(arr):
      return [sum(x) for x in zip(*arr)]

>>> addValuesInAllCols( [ [1,2,3], [10,20,30], [100,200,300] ] )
[111, 222, 333]

行总和

>>> map(sum, [ [1,2,3], [10,20,30], [100,200,300] ] )
[6, 60, 600]
于 2012-11-23T04:26:51.690 回答
0

另一种选择:

from operator import itemgetter

matrix = [ [1,2,3], [10,20,30], [100,200,300] ]

def addValuesInAllCols(arr):
    return map(sum, [map(itemgetter(i), arr) for i in range(len(a))])

其中map 是一个内置函数,可以重写为一个简单的 for。例如:

[map(itemgetter(i), arr) for i in range(len(a))]是相同的:

result = []
for i in range(len(a)):
    tmp = []
    for row in a:
        tmp.append(row[i])
    result.append(tmp)

根据新测试编辑:

def addValuesInAllCols(arr):
    return map(sum, arr)

或没有地图:

def addValuesInAllCols(arr):
    return [sum(row) for row in arr]
于 2012-11-23T04:33:04.960 回答