如何将元素插入到空列表的任意深度嵌套列表中



在任意深度嵌套的空列表列表中,我想插入列表列表中的元素。两个列表的长度相同。

例如,我可能想插入

a = [ [1], [2,3], [[4,5]] ]

b =  [ [[ ]], [[[[ ]]]], [ ] ]

以便我获得

c =  [ [[1]], [[[[2,3]]]], [ [4,5] ] ]. 

我已经尝试了各种方法,但还没有接近可行的解决方案。

您可以使用递归:

a = [ [1], [2,3], [[4,5]] ]
b =  [ [[ ]], [[[[ ]]]], [ ] ]
def update(j, k):
return next(k) if not j else [update(i, k) for i in j]
print(update(b, iter(a)))

输出:

[[[1]], [[[[2, 3]]]], [[4, 5]]]

对于b的每个子列表,您可以迭代地将内部子列表分配给同一变量,直到子列表变为空,此时您可以将a中的相应子列表复制到空子列表:

for s, l in zip(a, b):
while l:
l, =  l
l[:] = s

这样b就变成了:

[[[1]], [[[[2, 3]]]], [[4, 5]]]

最新更新