我找到了this recipe at the python mailing list。有了它,您可以使用索引迭代器访问容器的元素。如果您需要使用 container[index_1, index_2] 表示法,可以使用 Mark 帖子中概述的方法轻松调整。
>>> from operator import getitem
>>> from functools import reduce
>>> l = [1,[2,[3,4]]]
>>> print(reduce(getitem, [1,1,1], l))
4
这是python邮件列表中建议的另一种方法,我采用container[index_1, index_2]表示法。
class FlatIndex(object):
def __init__(self, l):
self.l = l
def __getitem__(self, key):
def nested(l, indexes):
if len(indexes) == 1:
return l[indexes[0]]
else:
return nested(l[indexes[0]], indexes[1:])
return nested(self.l, key)
>>> l = [1,[2,[3,4,[5,6]]]]
>>> a = FlatIndex(l)
>>> print(a[1,1,2,1])
6