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