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

3

我想要将一个列表中的列表元素插入到任意深度的空列表嵌套中。这两个列表具有相同的长度。

例如,我可能希望插入:

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

转换为

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

为了让我获得
c =  [ [[1]], [[[[2,3]]]], [ [4,5] ] ]. 

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

2个回答

1
你可以使用递归:
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]]]

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

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

这样 b 就变成了:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接