2

私はPythonで2次元リストを使用しています。リスト内のすべてのアイテムの合計を見つけて、最低値のインデックスを返す必要があります。

次のように返されます。

Row([[1000, 30], [12, 23], [560, 30, 1]])
1
Row([[10, 9], [20, 1, 2], [1, 3]])
2

これは私がこれまでシェルに持っていたものです:

def Row(S):
count=0
for r in range(len(S[0])):
    for c in range(len(S)):
        count += sum([r])
        return r

合計が最小の 2 次元リストでインデックスを返すコードをシェルで取得できません。何か案は?

4

3 に答える 3

1

あなたは1行でそれを行うことができます:

minidx = min(enumerate(data), key=lambda x:sum(x[1]))[0]

私は(結果にインデックスを付けるのではなく)解凍することを好みますが:

minidx, minlist = min(enumerate(data), key=lambda x:sum(x[1]))

これには、最小の合計を持つリストをすばやく処理できるという副次的な利点があります...インデックスがあれば、それを取得するのは簡単ですが...

于 2012-10-25T00:53:50.797 に答える
1

「キー」を指定してmin、任意の基準に従ってリストの最小値を取得できます。この機能を使用すると、たった 1 行で実行できます。

def min_sum(data):
    return min(xrange(len(data)), key=lambda i: sum(data[i]))
于 2012-10-25T00:54:04.430 に答える
0
def row(data):
    sums = [sum(x) for x in data]
    return sums.index(min(sums))

print row([[1000, 30], [12, 23], [560, 30, 1]])
于 2012-10-25T00:49:25.243 に答える