2

我目前正在开发一个 python 程序,它使用 3 个不同的数组进行大量计算。每个键处的数组值(即i[1]a[1]哪个相关也与q[1].

我试图找出哪个值q最高(我正在使用python的q.max()函数),但我不知道如何找出该最大值的键值。即,如果最大值q[67]等于并且等于我将111110029233如何获取该[67]值,以便我可以使用该键在i列表和a列表中查找相应的值。

4

5 回答 5

3

试试这个:

import operator
max(enumerate(q),key=operator.itemgetter(1))[0]
于 2013-01-31T23:20:33.637 回答
3
>>> q = [1,2,3,4,5,6,5,4,3,2,1]
>>> q.index(max(q))
5
于 2013-01-31T23:29:34.070 回答
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和值。目前,您正在尝试找到该最大值的索引,以便您可以使用它来访问and中的相应值,但我认为以不同的方式进行处理会更有效。iqqia

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

这会找到最大值q、 值以及对应的ia值。以下是它的工作原理:

首先,该zip函数从每个列表中构造一个匹配值元组的生成器(或列表,如果您使用的是 Python 2)。也就是说,它产生(q[0], i[0], a[0])(q[1], i[1], a[1]),依此类推。

然后该max函数将比较元组,使用第一个值(来自q)作为最重要的部分。如果 中存在唯一的最大值q,那就是它。如果最大值相同,我上面写的代码将优先选择具有最高i值的代码,如果相同,则选择具有最高a值的代码。

最后,它将最大元组解包到max_q,max_imax_a变量中,以便您可以单独使用它们。

于 2013-02-01T00:26:19.297 回答