矩阵的总和,偶数或奇数

时间:2012-11-23 04:22:35

标签: python

此函数接收表示为行列表的数字矩阵,其中每行依次为列表。假设它是一个方阵:所有行都有相同的长度,并且行数与每行中的元素数量相同。还假设矩阵的尺寸至少为2乘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]

这不是类似的,但你如何单独总结列表

3 个答案:

答案 0 :(得分:4)

matrix = [ [1,2,3], [10,20,30], [100,200,300] ]
print [sum(row) for row in zip(*matrix)]

答案 1 :(得分: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]

答案 2 :(得分: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 is a build-in function可以重写为简单的地方。例如:

[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]