我有以下列表:
[[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() 但它不起作用。 怎么了?
您可以将一个键函数传递给
max
:
l = [...]
res = l.index(max(l, key=lambda x: x[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