Python2:使用索引列表访问嵌套列表

时间:2015-05-27 16:33:21

标签: python nested-lists

如何使用包含索引的另一个列表访问嵌套列表的元素?

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的情况下摆脱那种深度镜检。

我对任何建议感到高兴:)

谢谢!

1 个答案:

答案 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)