当python中所有列表的所有维度都未知时,在列表列表列表中追加项

当python中所有列表的所有维度都未知时,在列表列表列表中追加项,python,list,indexing,Python,List,Indexing,我试图编写python代码,将n维数据组织到容器中 为此,我使用以下函数初始化空列表列表,该函数将每个维度的容器数作为一个数组参数: def empties(b): invB = np.flip(b, axis=0) empty = [] for b in invB: build = deepcopy(empty) empty = [] for i in range(0,b): empty.appe

我试图编写python代码,将n维数据组织到容器中

为此,我使用以下函数初始化空列表列表,该函数将每个维度的容器数作为一个数组参数:

def empties(b):

    invB = np.flip(b, axis=0)
    empty = []
    for b in invB:
        build = deepcopy(empty)
        empty = []
        for i in range(0,b):
            empty.append(build)

    return np.array(empty).tolist() # workaround to clear list references
例如,对于每个维度上有3个存储箱的二维数据,应预期以下内容:

输入:

empties([3,3])
输出:

[ [[],[],[]], [[],[],[]], [[],[],[]] ]
我想将对象附加到此列表中。如果尺寸已知,这很容易。如果我想将一个对象附加到上述列表的位置(1,2),我可以使用:

bins = empties([3,3])

obj = Object()
bins[1][2].append(obj)
但是,我希望这对任何未知数量的尺寸和箱子都有效。因此,我不能使用“[]”符号来定义列表索引。列表不采用列表或元组作为索引,因此这不是一个选项。此外,我不能使用numpy数组,因为所有列表的长度都可能不同

对于如何基于动态数量的索引设置列表元素,有什么解决方案吗

理想情况下,如果列表可以将列表作为索引,我会这样做:

idx = some_function_that_gets_bin_numbers()

bins[idx].append(obj)

我是说。。。您可以在自定义类上实现自定义的
\uuu getitem\uuu
(就像numpy那样)

但假设你不能,比如:

def append_md(lst, idx, value):
    for i in idx:
        lst = lst[i]
    lst.append(value)

append_md(bins, idx, obj)

应该这样做。

您可以像这样迭代地将索引应用于嵌套数组:

reduce((lambda a, e: a[e]), index_list, nested_list)

如果
nested_list=[0,1,[[2],[3]],4],5]
index_list=[2,0,1]
,上面的行将返回
[3]

这篇文章正是我所需要的-明确了我应该如何使用列表引用。我只想注意第三行应该是“lst=lst[I]”