Python,获取列表列表中最大值的索引

问题描述 投票:0回答:2

我有以下列表:

[[0, 0],
 [0, 0],
 [0, 0],
 [0, 0],
 [0, 0],
 [0, 0],
 [1.0, 4],
 [0, 0],
 [0.75, 3],
 [0.75, 3],
 [0, 0],
 [1.0, 4],
 [0, 0],
 [0, 0],
 [0, 0],
 [0, 0],
 [0, 0],
 [0, 1],
 [0, 2]]

我正在尝试获取与列表中每个第一个元素的最大值相对应的索引。

我正在使用这个:

similarity_list.index(max([similarity_list[1]]))

它返回以下错误:

具有多个元素的数组的真值不明确。 使用 a.any() 或 a.all()

我正在尝试使用 .any() 或 .all() 但它不起作用。 怎么了?

python list indexing max
2个回答
1
投票

您可以将一个键函数传递给

max

l = [...]
res = l.index(max(l, key=lambda x: x[1]))

1
投票

要在子数组的第一个索引中获得最大值的项目,您可以使用

max
和一个 lambda 告诉
max
函数仅根据值的某些属性进行评估(在本例中为值在指数零)。

>>> max_val = max(data, key=lambda v: v[0])
>>> max_val 
[1.0, 4]

然后要获取该值的索引,您可以使用列表上的简单索引函数。

>>> max_index = data.index(max_val)
>>> max_index 
6

您可以通过枚举输入列表同时获得这两个值,这将允许您将索引作为返回数据的一部分包含在内。我们只需要稍微改变我们在 lambda 中提取数据的方式,max 函数用于对候选人进行排名。

>>> max_index, max_val = max(enumerate(data), key=lambda v: v[1][0])
>>> max_index, max_val
(6, [1.0, 4])

为了单独获取索引,您可以找到索引值与其在列表中的相应数据相比的最大值。同样,使用 lambda 指示 max 函数如何评估候选人。

>>> max_index = max(range(len(data)), key=lambda i: data[i][0])
>>> max_index
6
© www.soinside.com 2019 - 2024. All rights reserved.