如何在Python中访问整数列表的特定位置?

如何在Python中访问整数列表的特定位置?,python,numpy,Python,Numpy,我有一个整数列表,它应该用作另一个列表的索引来检索值。假设我们有以下数组 a = [1,2,3,4,5,6,7,8,9] 我们可以使用以下代码获得特定元素 import operator operator.itemgetter(1,2,3)(a) 它将返回第2项、第3项和第4项 假设我有另一张清单 b=[1,2,3] 但是如果我尝试运行下面的代码,它会得到一个错误 operator.itemgetter(b)(a) 我想知道是否有人能帮我。我认为问

我有一个整数列表,它应该用作另一个列表的索引来检索值。假设我们有以下数组

    a = [1,2,3,4,5,6,7,8,9]
我们可以使用以下代码获得特定元素

    import operator
    operator.itemgetter(1,2,3)(a)
它将返回第2项、第3项和第4项

假设我有另一张清单

    b=[1,2,3]
但是如果我尝试运行下面的代码,它会得到一个错误

    operator.itemgetter(b)(a)
我想知道是否有人能帮我。我认为问题在于我必须将b转换成逗号分隔的索引,但不是很确定

非常感谢使用*:

operator.itemgetter(*b)(a)

函数调用中的*表示解压缩此值,并将其元素用作函数的参数。

itemgetter的第一个参数需要是元组。您可以通过以下方式执行此操作:

apply(operator.itemgetter, tuple(b))(a)

可能有一种更清洁/更具同情心的方法来做这件事,但是这对你的例子来说是有效的。

< P>因为你用NUMPY标签来标记你的问题,你也可以考虑制作一个数组,这样就可以工作:

from numpy import array
a = array([1,2,3,4,5,6,7,8,9])
b = [1,2,3]
a[b]
您也可以尝试:

map(a.__getitem__, b)
该代码返回Python 2中的列表或Python 3中的迭代器。如果需要将其转换为tuple,只需将其放入
tuple()

中,而数组(operator.itemgetter(*b)(a))可能不太清晰,如果需要将输出转换为数组,则其速度比数组(a)[b]快。因此,如果输出应该是一个数组,并且您不关心易读性,那么仍然使用Ned的解决方案。