【问题标题】:How to insert elements into an arbitrarily deep nested list of empty lists如何将元素插入到任意深度的空列表嵌套列表中
【发布时间】:2020-01-17 18:17:57
【问题描述】:

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

例如,我可能想插入

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

进入

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

让我得到

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

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

【问题讨论】:

    标签: python list nested


    【解决方案1】:

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

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

    这样b 就变成了:

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

    【讨论】:

      【解决方案2】:

      你可以使用递归:

      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]]]
      

      【讨论】:

        猜你喜欢
        • 2022-10-05
        • 1970-01-01
        • 2016-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多