我有一个复杂的多维可说对象(例如,列表)。我想编写函数来访问由索引元组表示的元素的值。维数本身是可变的。如果元素不存在,它还应该返回 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
我如何实现这一目标?
请您参考如下方法:
雅罗斯拉夫回答的另一种方法,在索引列表之前请求宽恕而不是许可:
def access(obj, indexes):
try:
return reduce(list.__getitem__, indexes, obj)
except Exception:
return None
它不是万无一失的;它假设 access 将按预期使用,如果有人决定尝试 access(1, 1)<,您不介意返回 ,例如。None/
