在 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+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告