通过python中的索引元组访问多维列表值

罗曼

我有一个复杂的多维可说话对象(例如,列表)。我想编写函数来访问由索引元组表示的元素的值。尺寸数本身是可变的。None如果元素不存在,它也应该返回

l = [[[1, 2],
      [3, 4]],
     [[5, 6],
      [7, 8]]]
access(l, (0, 0, 0)) # prints 1
access(l, (0, 1, 1)) # prints 4
access(l, (1, 1)) # prints [7, 8]
access(l, (0, 1, 2)) # prints None
access(l, (0, 0, 0, 0)) # prints None

我该如何实现?

雅罗斯拉夫(Yaroslav)管理员

您可以使用reduce()

def access(obj, indexes):
    return reduce(lambda subobj, index: subobj[index] if isinstance(subobj, list) and index < len(subobj) else None, indexes, obj)

或如@chepner所指出的,您可以def用来使其更具可读性:

def access(obj, indexes):
    def _get_item(subobj, index): 
        if isinstance(subobj, list) and index < len(subobj):
            return subobj[index]
        return None

    return reduce(_get_item, indexes, obj)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章