切片具有不同长度的子列表

发布于 2021-01-29 14:55:57

我有一个清单清单。每个子列表的长度在1到100之间。每个子列表在一组数据中的不同时间包含一个粒子ID。我想在给定的时间形成所有粒子ID的列表。为此,我可以使用以下方法:

    list = [[1,2,3,4,5],[2,6,7,8],[1,3,6,7,8]]
    list2 = [item[0] for item in list]

list2将包含list中每个子列表的首个元素。我不仅要对第一个元素执行此操作,还要对1到100之间的每个元素执行此操作。我的问题是,每个子列表都不存在元素号100(或66或77或其他)。

有什么方法可以创建列表列表,其中每个子列表都是给定时间所有粒子ID的列表。

我曾考虑过尝试使用numpy数组来解决此问题,好像列表的长度都一样,这将是微不足道的。我尝试将-1加到每个列表的末尾以使它们的长度相同,然后掩盖负数,但是到目前为止,这对我没有用。我将在给定的时间使用ID列表来切片另一个单独的数组:

    pos = pos[satIDs]
关注者
0
被浏览
78
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。
    lst = [[1,2,3,4,5],[2,6,7,8],[1,3,6,7,8]]
    func =  lambda x: [line[x] for line in lst if len(line) > x]
    
    func(3)
    [4, 8, 7]
    func(4)
    [5, 8]
    

    -更新-

    func =  lambda x: [ (line[x],i) for i,line in enumerate(lst) if len(line) > x]
    func(4)
    [(5, 0), (8, 2)]
    


知识点
面圈网VIP题库

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

去下载看看