在 Python 中找到列表中元素的索引

Rayven Esplanada 2023年1月30日 2021年3月21日
  1. 在 Python 中使用列表 index() 方法查詢列表的索引
  2. 在 Python 中使用 numpy.where() 查詢列表的索引
在 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() 函式。

Rayven Esplanada avatar Rayven Esplanada avatar

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

相關文章 - Python List