代码之家  ›  专栏  ›  技术社区  ›  jxpython

在与最长列表长度相同的列表列表中创建新列表

  •  1
  • jxpython  · 技术社区  · 8 年前

    如果我有以下列表:

    data = [[1,2,3], [1,2,3,4,5], [1,2,3,4,5,6,7]]
    

    有没有办法在第二个和第三个列表(最好是在任何位置)之间创建一个与此列表中最长列表长度相同的列表?

    data = [[1,2,3], [1,2,3,4,5], [1,2,3,4,5,6,7], [1,2,3,4,5,6,7]]
    

    我在熊猫的数据框中使用这些数据。也许熊猫能帮我实现我的目标?

    3 回复  |  直到 8 年前
        1
  •  2
  •   Boris Verkhovskiy Brian Clapper    6 年前

    首先获取最长的子列表,然后创建该长度的新列表(通过复制它或任何您需要的方式)。然后将新列表插入 data 在你想要的位置。

    data = [[1,2,3], [1,2,3,4,5], [1,2,3,4,5,6,7]]
    
    longest_sublist = max(data, key=len)
    new_list = longest_sublist.copy()
    
    desired_position = 2
    data.insert(desired_position, new_list)
    

    之后, 数据 变成:

    [[1, 2, 3], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5, 6, 7], [1, 2, 3, 4, 5, 6, 7]]
    
        2
  •  1
  •   vash_the_stampede    8 年前

    insert 把它变成 data

    data = sorted(data, key=len) # for when lists are not organized by len
    
    new = ['x']*len(data[-1])
    data.insert(-1, new)
    # [[1, 2, 3], [1, 2, 3, 4, 5], ['x', 'x', 'x', 'x', 'x', 'x', 'x'], [1, 2, 3, 4, 5, 6, 7]]
    
        3
  •  0
  •   José Fonseca    8 年前

    def insert_sublist(list_of_lists, position):
        ideal_sized_list = list(range(max([len(i) for i in list_of_lists])))
        return list_of_lists[:position]+[ideal_sized_list]+list_of_lists[position:]