Python – 查詢列表中最小元素的索引


列表中最小值的索引表示最小元素的位置。每個列表元素都有一個獨特的索引,從第一個元素的零開始,每個後續元素遞增一。透過確定最小元素的索引,我們可以找到列表中最小值的確切位置。在 Python 中,我們有一些內建函式,如 min()、index()、argmin()、lambda() 和 enumerate(),可以用來查詢列表中最小元素的索引。

語法

以下語法用於示例:

min()

min() 是 Python 中的內建函式,用於返回最小值。

index()

index() 是 Python 中的內建函式,用於在列表中搜索元素並返回元素的位置。

argmin()

Python 的內建方法 argmin() 用於查詢最小元素並返回最小位置索引。

lambda

Python 中的 lambda 函式被稱為匿名函式。當需要函式物件時可以使用它。

enumerate()

enumerate() 是 Python 中的內建函式,允許跟蹤迴圈迭代。

使用 index() 函式

程式使用 index() 返回列表中元素的特定位置/索引。它還使用內建函式 min() 獲取最小索引元素。

示例

在下面的示例中,程式首先使用名為 find_min_index() 的函式(透過函式呼叫訪問變數 my_list),該函式接受引數 lst。然後,對內建函式min()使用相同的引數,該函式將查詢列表中的最小值並將其儲存在變數 min_value 中。現在,使用變數lst應用內建方法index()來獲取列表中最小值的特定位置索引。接下來,使用函式返回min_index,它返回最小索引。接下來建立儲存一些整數值的變數 my_list。然後在變數 min_index 中使用函式呼叫,並將相同的變數作為print()函式的引數來獲取結果。

def find_min_index(lst):
    min_value = min(lst)
    min_index = lst.index(min_value)
    return min_index

# Create the list
my_list = [50, 2, 19, 11, 27]
min_index = find_min_index(my_list)
print(" The minimum index position:\n", min_index)

輸出

 The minimum index position:
 1

使用 enumerate()

程式使用內建函式 enumerate() 來跟蹤列表的迭代,並使用 for 迴圈來查詢最小索引元素。

示例

在下面的示例中,使用遞迴技術來解決此問題陳述。將數字列表作為引數傳遞給函式 find_min_index。然後在函式內使用 min 函式來獲取輸入列表中的最小數字。然後,程式碼使用 for 迴圈和 enumerate 函式迭代輸入列表的索引和值。將每個索引-值對的值與最小值進行比較。如果該值等於最小值,則該方法返回列表中的最小元素索引。

def find_min_index(lst):
    min_value = min(lst)
    for index, value in enumerate(lst):
        if value == min_value:
            return index
# Create the list
my_list = [11, 12, 13, 14, 15]
min_index = find_min_index(my_list)
print("The minimum index position from the list:\n", min_index)

輸出

 The minimum index position from the list:
 0

使用 numpy.argmin() 函式

程式使用名為 numpy 的模組的內建函式 argmin() 來查詢最小元素及其索引。

示例

在下面的示例中,程式從 numpy 模組開始,並將引用物件作為 np。然後它將使用遞迴函式來使用一些內建函式,例如 array()[儲存相同型別的列表元素] 和 argmin()[返回最小索引及其元素] 並將其儲存到各自的變數中。然後使用函式返回以獲得所需的結果。

import numpy as np

def find_min_index(lst):
    arr = np.array(lst)
    min_index = np.argmin(arr)
    return min_index

# create the list
my_list = [100, 676, 66, 987, 99, 111, 55, 444]
min_index = find_min_index(my_list)
print("The minimum index position from the list:\n", min_index)

輸出

 The minimum index position from the list:
 6

使用 min() 和 lambda 函式

這是解決此問題陳述的另一種方法,它使用三個內建函式來查詢列表中最小元素的索引。

示例

在下面的示例中,程式從名為find_min_index的函式開始,該函式接受引數lst以獲取值列表。然後初始化變數 min_index,該變數使用一些內建函式(min()、range()、len()lambda)來儲存值,這些函式將查詢列表中元素的最小索引。接下來,使用函式呼叫將變數my_list作為引數並將其儲存在變數 min_index 中。最後,我們藉助變數min_index列印結果。

def find_min_index(lst):
    min_index = min(range(len(lst)), key=lambda i: lst[i])
    return min_index

# Create the list
my_list = [5, 2, 9, 1, 7]
min_index = find_min_index(my_list)
print("The minimum index present at:\n", min_index)

輸出

 The minimum index present at:
 3

使用 sorted() 函式

程式使用內建函式 sorted(),它接受兩個引數:enumerate() 用於跟蹤列表上的迭代,以及 key 用於設定內建函式 lamda 以對列表中的最小元素進行排序。

示例

在下面的示例中,將有一個給定的輸入列表透過函式呼叫傳遞。然後,函式定義接收該列表以使用內建函式 sorted() 對最小索引元素進行操作。然後在函式內使用 enumerate 函式來構建一個元組列表,每個元組包含輸入列表中元素的索引和值。使用 sorted 函式和一個 key 引數對這個元組列表進行升序排序,該引數指定一個 lambda 函式來從每個元組中提取值。透過函式返回,它將得到最小值。接下來,在變數 my_list 中建立輸入列表。然後使用函式呼叫傳遞列表值 my_list 的引數,並將其儲存在變數 min_index 中。最後,使用相同的變數作為 print 函式的引數來獲取結果。

def find_min_index(lst):
    sorted_list = sorted(enumerate(lst), key=lambda x: x[1])
    min_index = sorted_list[0][0]
    return min_index

# Create the list
my_list = [11, 7, 18, 20, 12, 0]
min_index = find_min_index(my_list)
print("The minimum index present at:\n",min_index)

輸出

The minimum index present at:
 5

結論

我們討論了多種解決此問題陳述的方法,學習了 Python 的一些內建函式,例如 min()、array()、sorted()、enumerate()、index() 和 argmin()。本文幫助我們構建基於在任何搜尋應用程式中搜索元素的邏輯。

更新於:2023年8月16日

9K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告