在 Python 中根據索引查詢列表元素


考慮兩個列表。第二個列表中的元素是數字,需要將其視為第一個列表元素的索引位置。對於這種情況,我們有以下 Python 程式。

使用 map 和 getitem

我們可以使用 getitem 魔術方法來訪問列表項。我們可以將其與 map 函式一起使用,以便從第一個列表中獲取結果,該結果將第二個列表中的元素作為其索引。

示例

 線上演示

listA = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
listB = [0, 1,3]

print("Given list A:",listA)
print("Given list B:",listB)


res=list(map(listA.__getitem__, listB))

print("Result :",res)

輸出

執行以上程式碼將得到以下結果:

Given list A: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
Given list B: [0, 1, 3]
Result : ['Mon', 'Tue', 'Thu']

使用 itemgetter

operator 模組提供了 itemgetter 方法,可用於此目的。在下面的程式中,我們將第二個列表擴充套件為索引,並應用 itemgetter 函式以獲取列表中相應的元素。

示例

 線上演示

from operator import itemgetter

listA = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
listB = [0, 1,3]

print("Given list A:",listA)
print("Given list B:",listB)


res=list((itemgetter(*listB)(listA)))

print("Result :",res)

輸出

執行以上程式碼將得到以下結果:

Given list A: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
Given list B: [0, 1, 3]
Result : ['Mon', 'Tue', 'Thu']

使用 numpy

Numpy 庫可以透過僅建立一個數組並將兩個列表作為輸入引數來實現此目的。結果再次轉換為列表。

示例

 線上演示

import numpy as np

listA = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
listB = [0, 1,3]

print("Given list A:",listA)
print("Given list B:",listB)


res=list(np.array(listA)[listB])

print("Result :",res)

輸出

執行以上程式碼將得到以下結果:

Given list A: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
Given list B: [0, 1, 3]
Result : ['Mon', 'Tue', 'Thu']

更新於: 2020年5月5日

5K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告