此函数接收表示为行列表的数字矩阵,其中每行依次为列表。假设它是一个方阵:所有行都有相同的长度,并且行数与每行中的元素数量相同。还假设矩阵的尺寸至少为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]
这不是类似的,但你如何单独总结列表
答案 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]