在Python 中,根據索引從清單中選擇特定元素可能是常見的要求。最近提出的一個問題解決了這種情況,提出了一個整數 a 列表和一個索引 b 列表。目標是建立一個新清單 c,其中包含與 b 中的索引相對應的 a 元素。
提供的解決方案利用列表理解來迭代b 中的索引並從a 中選擇適當的元素:
a = [-2, 1, 5, 3, 8, 5, 6] b = [1, 2, 5] c = [a[i] for i in b]
雖然這種方法完全有效,但問題是是否存在更有效的方法來實現所需的結果。
Operator.itemgetter
一個替代解決方案涉及使用Python運算子模組中的operator.itemgetter函數:
from operator import itemgetter a = [-2, 1, 5, 3, 8, 5, 6] b = [1, 2, 5] print(itemgetter(*b)(a))
>Numpy數組索引
對於性能至關重要的情況,NumPy 提供優化的數組處理功能:import numpy as np a = np.array([-2, 1, 5, 3, 8, 5, 6]) b = [1, 2, 5] print(list(a[b]))
解決方案評估
值得注意的是,使用清單理解的原始解決方案仍然是一個可行的選擇。它簡潔且易於理解。 itemgetter 和 NumPy 方法雖然提供了潛在的效能優勢,但對於較小的清單或不太關心速度的情況可能有點過分了。 最終,選擇使用哪種方法取決於大小等因素清單的內容以及應用程式的特定效能要求。以上是如何在Python中透過索引高效存取多個清單元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!