使用列表作为“索引列表”来寻址另一个列表的元素

时间:2013-09-08 16:35:53

标签: python list

Overflowers,

在Python中,我想使用列表作为“索引列表”来从另一个列表中提取元素。例如:

mylist = [[1,2,3],[4,5,6],[7,8,9]]
index = [1,2]

我想使用mylist[1][2]间接访问index(即数字6)。我尝试了语法mylist(index)mylist[index],但都没有按预期工作。

本质上,我希望mylist充当一个函数,其输入变量是索引列表,其输出值是mylist的实际成员。

我尝试寻找解决方案一段时间但没有成功。 (即使弄清楚如何简洁地表达这个问题似乎也相当棘手。)

PS:当mylist是NumPy数组时,我实际上是在尝试这个,但是列表的解决方案应该适用于数组。

1 个答案:

答案 0 :(得分:5)

您可以使用

reduce(operator.getitem, index, mylist)

这是一个完整的例子:

import operator
mylist = [[1,2,3],[4,5,6],[7,8,9]]
index = [1,2]
val = reduce(operator.getitem, index, mylist)
print(val)

对于NumPy数组,有一种更简单的方法:

import numpy as np
...
myarr = np.array(mylist)
val = myarr[tuple(index)]
print(val)