如何使用包含索引的另一个列表访问嵌套列表的元素?
e.g:
# this is the variable containing the indices
a = [0, 1]
b = [[1,2],[3,4]]
实际上,这些列表中填充了自定义类的元素,包含“坐标”(a)的列表包含2个以上的元素。
是否有可能自动访问b [0] [1]?以前,我使用过这段代码:
c = deepcopy(b)
for el in a:
c = c[el]
但由于b非常大,我很乐意在没有操纵b的情况下摆脱那种深度镜检。
我对任何建议感到高兴:)
谢谢!
答案 0 :(得分:3)
只需将其投入功能。这将使其保持范围,因此您不会覆盖原始值
def nested_getitem(container, idxs):
haystack = container
for idx in idxs:
haystack = haystack[idx]
return haystack
样本:
>>> a = [0, 1]
>>> b = [[1, 2], [3, 4]]
>>> nested_getitem(b, a)
2
如果你疯了,你也可以用functools.reduce
来做这件事。
import functools
import operator
def nested_getitem(container, idxs):
return functools.reduce(operator.getitem, idxs, container)