我有一个复杂的多维可说话对象(例如,列表)。我想编写函数来访问由索引元组表示的元素的值。尺寸数本身是可变的。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
我该如何实现?
您可以使用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] 删除。
我来说两句