如何找到 Python 列表中最大值的索引?

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

请帮忙。我刚开始写代码,卡在这里了。

您只需要 .max() 和 .index() 函数。首先,找到列表的最大元素,然后使用 index() 函数简单地获取它的索引。

你可以在这里看到完整的教程:https://www.kite.com/python/answers/how-to-find-the-index-of-the-max-value-in-a-list-in-python

.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].

Easy way/Better way is: idx_max = i. (Based on @Matthias comment above.)

  • 使用 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)

如果您想遍历这些值以找到最大值,请注意以下事项:

  1. list.index(value) 将在列表中找到该值的索引。在你的情况下,你正在写 list.index(index_number) 这没有意义。 'i' 已经代表列表索引,所以只需设置 idx_max = 'i'.

  2. 另外需要注意的是,如果将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' 用于 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