如果我具有以下列表列表:
data = [[1,2,3], [1,2,3,4,5], [1,2,3,4,5,6,7]]
是否可以在第二个和第三个之间(最好在任何位置)创建一个列表,该列表的长度与此列表中的最长列表相同?
例如,在我的情况下,在第二个和第三个/最后一个列表之间创建一个列表,该列表的长度与最后一个列表的长度相同(因为这是长度为7的最长列表):
data = [[1,2,3], [1,2,3,4,5], [1,2,3,4,5,6,7], [1,2,3,4,5,6,7]]
我在带有熊猫的数据框中使用此数据。也许熊猫可以帮助我实现目标?
答案 0 :(得分:2)
首先获取最长子列表的长度,然后创建该长度的新列表。然后将新列表插入data
中您想要的位置。
data = [[1,2,3], [1,2,3,4,5], [1,2,3,4,5,6,7]]
max_length = max(len(sublist) for sublist in data)
new_list = [1] * max_length
desired_position = 2
data.insert(desired_position, new_list)
此后,data
变为:
[[1, 2, 3], [1, 2, 3, 4, 5], [1, 1, 1, 1, 1, 1, 1], [1, 2, 3, 4, 5, 6, 7]]
答案 1 :(得分:1)
由于没有为新列表提供特定元素,因此您可以简单地复制最长的子列表,然后将其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]]
答案 2 :(得分:0)
它实际上很简单
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:]