2

私は現在、3つの異なる配列を使用して多くの計算を行うPythonプログラムに取り組んでいます。各キーでの配列の値(つまりi[1]、に関連しa[1]ている、またはに関連している) q[1]

のどの値が最も高いかを見つけようとしていますq(Pythonのq.max()関数を使用していました)が、その最大値のキーの値を見つける方法がわかりません。つまり、maxがどのように値を取得するかq[67]と等しい場合、そのキーを使用してリストおよびリスト内の対応する値を見つけることができます。111110029233[67]ia

4

5 に答える 5

3
>>> q = [1,2,3,4,5,6,5,4,3,2,1]
>>> q.index(max(q))
5
于 2013-01-31T23:29:34.070 に答える
3

これを試して:

import operator
max(enumerate(q),key=operator.itemgetter(1))[0]
于 2013-01-31T23:20:33.637 に答える
2

maxはインデックスを返しません。それを見つけるには、次のようにリストをループする必要があります。

q = [1,2,3,4,5,6,5,4,3,2,1]

def find_max(li):
    max_item = max(li)
    return (li.index(max_item), max_item)

print find_max(q)

その後、返された値の最初の要素を使用して、リスト内の関連する要素にアクセスできます。

または、インデックスのみが必要な場合は、次を使用できます。

q.index(max(q))

このスタックオーバーフローの回答で回答されているように

于 2013-01-31T23:24:44.680 に答える
1
q = [1,2,3,4,5,100,-1,0]
index = max(enumerate(q), key=lambda x: x[1])[0]
于 2013-01-31T23:25:27.347 に答える
0

最終的な目標は、最大の値を生成するaとの値を見つけることのようです。現在、その最大値のインデックスを見つけようとしているので、それを使用してとの対応する値にアクセスできますが、別の方法でそれを行う方が効率的だと思います。iqqia

max_q, max_i, max_a = max(zip(q, i, a))

これにより、最大q値、値、および対応するiおよびa値が検出されます。仕組みは次のとおりです。

最初に、zip関数は、各リストから一致した値のタプルのジェネレーター (Python 2 を使用している場合はリスト) を構築します。つまり、yield の(q[0], i[0], a[0])後に続く(q[1], i[1], a[1])などです。

次に、max関数は最初の値 (からq) を最も重要な部分として使用して、タプルを比較します。に固有の最大値がある場合q、これがそれになります。最大値が同点の場合、上記のコードは値が最も高いものを優先し、i同点の場合は値が最も高いものを優先しaます。

最後に、最大タプルをmax_qmax_iおよびmax_a変数にアンパックして、個別に使用できるようにします。

于 2013-02-01T00:26:19.297 に答える