[英]How to find the index of the max value in a list for Python?
我有一个列表,我需要找到列表中的最大元素,并记录该最大元素所在的索引。
这是我的代码。
list_c = [-14, 7, -9, 2]
max_val = 0
idx_max = 0
for i in range(len(list_c)):
if list_c[i] > max_val:
max_val = list_c[i]
idx_max = list_c.index(i)
return list_c, max_val, idx_max
请帮忙。 我刚刚开始编码并被困在这里。
.index
只能对列表中的元素进行。 所以,做idx_max = list_c.index(list_c[i])
max_val = list_c[i]
idx_max = list_c.index(list_c[i])
然而,这是一个缩短的版本
list_c = [-14, 7, -9, 2]
print(max(list_c),list_c.index(max(list_c)))
i
的索引。 它应该是list_c[i]
。简单的方法/更好的方法是:
idx_max = i
。 (基于上面的@Matthias 评论。)
print
打印结果而不return
。 您在函数内部使用return
。list_c
具有所有负值,您的代码也不起作用,因为您将max_val
设置为0
。 你总是得到 0。list_c = [-14, 7, -9, 2]
max_val = 0
idx_max = 0
for i in range(len(list_c)):
if list_c[i] > max_val:
max_val = list_c[i]
idx_max = i
print(list_c, max_val, idx_max)
[-14, 7, -9, 2] 7 1
将逻辑应用于整个列表是最简单的。 您可以使用 max(list) 获取列表的最大值,并且您可以使用与上面使用的相同的索引函数来获取该数字在列表中的索引。
max_val = max(list_c)
idx_max = list_c.index(max_val)
如果要遍历值以找到最大值,请注意以下几点:
list.index(value) 将在列表中找到该值的索引。 在您的情况下,您正在编写没有意义的 list.index(index_number) 。 'i' 已经代表列表索引,所以只需设置 idx_max = 'i'。
此外,您应该注意,如果您将 max_val 设置为零,如果所有列表项都小于零,它将在循环期间保持为零并且永远不会找到最大值。 最好先将 max_val 设置为列表的第一项,即 list_c[0]。
list_c = [-14, 7, -9, 2] max_val = list_c[0] idx_max = 0 for i in range(len(list_c)): if list_c[i] > max_val: max_val = list_c[i] idx_max = i
NB 'return' 用于从函数返回值。 如果要打印值,请使用 print(list_c, max_val, idx_max)。
您可以通过将列表转换为 NumPy 数组来使用 NumPy argmax()。
import numpy as np
list_c = [-14, 7, -9, 2]
print("Index max:",np.argmax(np.asarray(list_c)))
print("Value max:",list_c[np.argmax(np.asarray(list_c))])
索引最大值:1
最大值:7
遍历数组两次是低效的。 使用内置的enumerate()和max()与比较 lambda 表达式返回枚举的第二个元素:
>>> list_c = [-14, 7, -9, 2]
>>> print(max(enumerate(list_c), key=lambda x: x[1]))
(1, 7)
您只需要 .max() 和 .index() 函数。 首先,您找到列表的最大元素,然后使用 index() 函数简单地获取它的索引。
你可以在这里看到一个完整的教程: https : //www.kite.com/python/answers/how-to-find-the-index-of-the-max-value-in-a-list-in-python
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.