Python - 列表中最多 K 個元素的索引


將最多 K 個元素設定為給定列表中的特定值,以過濾元素大於 K 值的那些索引。在 Python 中,我們有一些內建函式,例如 enumerate()、range()、len()、where()、map()、range() 和 filter(),將用於解決列表中最多 K 個元素的索引問題。

讓我們來看一個例子。

給定的列表為 [10, 8, 13, 29, 7, 40, 91],K 值設定為 13。

現在,它將檢查有多少個元素小於或等於 12,並過濾其大於 12 的那些索引。

最終結果為 [10, 8, 13, 7]

語法

以下語法在示例中使用:

enumerate()

enumerate() 是 Python 中一個內建函式,它跟蹤每個給定索引元素的特定迭代。

range()

range() 是 Python 中一個內建函式,它根據給定的範圍返回數字序列。

len()

len() 是 Python 中一個內建函式,它返回結果的長度。

where()

where() 是 Python 中一個內建函式,它返回輸入陣列元素的索引,其中滿足特定條件。

map()

內建函式 map() 允許使用一些特定的內建函式迭代輸入列表。

filter()

當我們需要根據特定條件過濾專案時,應用 filter() 方法。簡單來說,它允許迭代那些被提取以滿足條件的元素。

lambda()

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

使用列表推導式

在下面的示例中,我們將透過定義表示最多元素的 K 值來啟動程式。然後建立將在列表推導式中使用的列表,其中內建函式 enumerate() 跟蹤每個索引元素的特定迭代。使用 <= 運算子,它根據 K 值查詢一些最多元素,並將結果以列表的形式返回。

示例

k = 10
list1 = [10, 4, 11, 12, 14]
idx = [i for i, num in enumerate(list1) if num <= k]
print(idx)

輸出

 [0,1]

使用迴圈並將索引附加到新列表

在下面的示例中,程式使用 for 迴圈,其中變數 i 使用內建函式 len() 和 range() 遍歷輸入列表。接下來,使用 if 語句根據最多 K 個元素使用 < 運算子設定條件。然後使用 append() 方法透過變數 i 插入元素並列印結果。

示例

k = 40
lst = [10, 20, 50, 60, 30, 80, 90]
idx = []
for i in range(len(lst)):
    if lst[i] < k:
        idx.append(i)
print(idx)

輸出

 [0, 1, 4]

使用 NumPy 和布林索引

在下面的示例中,程式使用 numpy 庫、k 值和輸入列表 (lst) 來計算最多 K 個元素的索引。內建函式 array() 將列表轉換為陣列元素並將其儲存在變數 arr 中。接下來,內建函式 where() 使用 < 運算子設定 arr 和 K 之間的條件,它返回小於 K 值的那些元素並將它們儲存在變數 idx 中。最後,我們使用變數 idx 列印結果。

示例

import numpy as np
k = 12
lst = [10, 4, 11, 12, 14]
arr = np.array(lst)
idx = np.where(arr < k)[0]
print(idx)

輸出

 [0 1 2]

使用 enumerate() 和 filter()

在下面的示例中,程式使用一些內建函式,例如 list()、map()、lambda() 和 enumerate() 來查詢列表中最多 K 個元素的索引。

示例

k = 8
lst = [10, 4, 11, 12, 14, 1, 2, 89, 0]
idx = list(map(lambda x: x[0], filter(lambda x: x[1] < k, enumerate(lst))))
print(idx)

輸出

 [1, 5, 6, 8]

結論

列表中最多 K 個元素是指設定 K 的特定值並返回小於或等於 K 的那些元素的元素。使用了各種內建函式,例如 filter()、lambda、append() 等來解決這個問題。這種型別的程式通常用於演算法問題解決。

更新於:2023年8月16日

86 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告