我目前正在开发一个 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中的相应值,但我认为以不同的方式进行处理会更有效。iqqia
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变量中,以便您可以单独使用它们。