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

もう1つのオプション:

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 に答える