我目前正在开发一个 python 程序,它使用 3 个不同的数组进行大量计算。每个键处的数组值(即i[1]
与a[1]
哪个相关也与q[1]
.
我试图找出哪个值q
最高(我正在使用python的q.max()
函数),但我不知道如何找出该最大值的键值。即,如果最大值q[67]
等于并且等于我将111110029233
如何获取该[67]
值,以便我可以使用该键在i
列表和a
列表中查找相应的值。
我目前正在开发一个 python 程序,它使用 3 个不同的数组进行大量计算。每个键处的数组值(即i[1]
与a[1]
哪个相关也与q[1]
.
我试图找出哪个值q
最高(我正在使用python的q.max()
函数),但我不知道如何找出该最大值的键值。即,如果最大值q[67]
等于并且等于我将111110029233
如何获取该[67]
值,以便我可以使用该键在i
列表和a
列表中查找相应的值。
试试这个:
import operator
max(enumerate(q),key=operator.itemgetter(1))[0]
>>> q = [1,2,3,4,5,6,5,4,3,2,1]
>>> q.index(max(q))
5
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))
q = [1,2,3,4,5,100,-1,0]
index = max(enumerate(q), key=lambda x: x[1])[0]
听起来您的最终目标是找到产生最大价值的a
和值。目前,您正在尝试找到该最大值的索引,以便您可以使用它来访问and中的相应值,但我认为以不同的方式进行处理会更有效。i
q
q
i
a
max_q, max_i, max_a = max(zip(q, i, a))
这会找到最大值q
、 值以及对应的i
和a
值。以下是它的工作原理:
首先,该zip
函数从每个列表中构造一个匹配值元组的生成器(或列表,如果您使用的是 Python 2)。也就是说,它产生(q[0], i[0], a[0])
了(q[1], i[1], a[1])
,依此类推。
然后该max
函数将比较元组,使用第一个值(来自q
)作为最重要的部分。如果 中存在唯一的最大值q
,那就是它。如果最大值相同,我上面写的代码将优先选择具有最高i
值的代码,如果相同,则选择具有最高a
值的代码。
最后,它将最大元组解包到max_q
,max_i
和max_a
变量中,以便您可以单独使用它们。