在 Python 中找到列表中元素的索引
本教程將演示如何在 Python 列表中查詢元素的位置或索引。
在 Python 中使用列表 index()
方法查詢列表的索引
Python 列表有一個內建的方法叫做 index()
,該方法接受一個表示要在現有列表中搜尋的值的引數。該函式將返回從索引 0
開始找到的第一次出現的索引,而不管它在列表中出現了多少次。
例如,宣告一個含有重複值 20
的列表,並呼叫方法 index(20)
並列印返回的內容。
lst = [13, 4, 20, 15, 6, 20, 20]
print(lst.index(20))
輸出:
2
在 lst
陣列中第一次出現的 20
值是在索引 2
上,這是函式呼叫的結果。具有相同值的其他元素將被忽略,因為它已在列表中找到匹配項。
如果給定列表中不存在某個值,而我們將傳遞不存在的值稱為 index()
,會發生什麼情況?讓我們以這個為例。
lst = [13, 4, 20, 15, 6, 20, 20]
print (lst.index(21))
輸出:
ValueError: 21 is not in list
如果在列表中找不到索引,則該函式將引發錯誤。在某些情況下,這可能不利於呼叫錯誤。為避免這種情況,請使用 try...except
塊捕獲錯誤,並進行處理,以使如果列表中不存在索引,則將其分配為 -1
。
lst = [13, 4, 20, 15, 6, 20, 20]
try:
ndx = lst.index(21)
except:
ndx = -1
print (ndx)
輸出:
-1
這樣,就不必呼叫顯式錯誤,並且程式可以在操作後繼續執行。
在 Python 中使用 numpy.where()
查詢列表的索引
NumPy
模組具有一個稱為 where()
的預定義函式,該函式用於在一個檔案中查詢多個元素,它接受一個跟定的條件。
在這種情況下,我們將專門使用 where()
來查詢給定值的索引。與內建的 index()
函式不同,where()
函式可以返回值所在的索引列表,如果該值在列表中存在多次。如果你需要該值的所有出現,而不僅僅是第一次出現,這就很有用。
第一步是將 Python 列表轉換成 NumPy
陣列。為此,請呼叫函式 np.array()
。
import numpy as np
lst = np.array(lst = [13, 4, 20, 15, 6, 20, 20])
初始化 NumPy
陣列後,我們只需要填充 where()
的第一個引數。將第一個引數初始化為 lst == 20
以找到值 20
的給定列表索引。
import numpy as np
lst = [13, 4, 20, 15, 6, 20, 20]
lst = np.array(lst)
result = np.where(lst == 20)
print(result)
輸出:
(array([2, 5, 6]),)
由於 NumPy
主要處理矩陣,因此 where()
函式將返回一個陣列的元組,而不是單個列表。如果只輸出單個列表是首選的,則呼叫結果的第一個索引,然後使用 print()
將其輸出。
import numpy as np
lst = [13, 4, 20, 15, 6, 20, 20]
lst = np.array(lst)
result = np.where(lst == 20)
print(result[0])
輸出:
[2 5 6]
請注意,NumPy
陣列由單個空格而不是普通逗號定界。
總之,index()
函式是在 Python 列表中查詢元素位置的最簡單方法。雖然,此函式僅返回給定值首次出現的索引。
如果存在該值的多個例項,則要返回多個索引,則可以選擇使用 NumPy
模組中的 where()
函式。
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn