当python中所有列表的所有维度都未知时,在列表列表列表中追加项
我试图编写python代码,将n维数据组织到容器中 为此,我使用以下函数初始化空列表列表,该函数将每个维度的容器数作为一个数组参数:当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
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]”