如何在不同长度的列表中删除嵌套的最内层

发布于 2021-01-29 16:42:00

我正在尝试删除单元素长度列表的列表中最里面的嵌套。您是否知道一种相对简单的方法(转换为NumPy数组就可以了):

[[[1], [2], [3], [4], [5]], [[6], [7], [8]], [[11], [12]]]

为此?:

[[1, 2, 3, 4, 5], [6, 7, 8], [11, 12]]

另外,我尝试这样做的实列表包含日期时间对象,而不是示例中的int。列表的初始集合将具有不同的长度。

或者,如果原始列表中有nan,那也可以,只要在输出列表中不存在nan,每个列表的长度是相同的。即

[[[1], [2], [3], [4], [5]], 
 [[6], [7], [8], [nan], [nan]], 
 [[11], [12], [nan], [nan], [nan]]]

对此:

[[1, 2, 3, 4, 5], [6, 7, 8], [11, 12]]
关注者
0
被浏览
48
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    如果嵌套始终是一致的,那么这很简单:

    In [2]: import itertools
    
    In [3]: nested = [ [ [1],[2],[3],[4], [5] ], [ [6],[7],[8] ] , [ [11],[12] ] ]
    
    In [4]: unested = [list(itertools.chain(*sub)) for sub in nested]
    
    In [5]: unested
    Out[5]: [[1, 2, 3, 4, 5], [6, 7, 8], [11, 12]]
    

    请注意,利用add列表的解决方案将为您提供O(n ^ 2)性能,其中n是每个子列表中合并的子子列表的数量。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看