Python列表排序难题

时间:2014-11-13 13:16:04

标签: python list

我有一个不寻常的列表排序问题,我正在努力寻找一种简洁有效的解决方法。问题如下:我有一个名为索引的列表,该列表中的每个项目对应于第二个列表数据的索引。因此,例如索引中的第一个数字是零,它对应于列表数据中的第一个项目,即1,索引中的3个对应于列表数据中的6,因为这是列表数据中的第3个项目[< em>包括第0项] ..

现在我想组织列表数据,以便它们在索引之间进行分组,如下所示:

indexes = [ 0, 3, 6, 8, 12, 13]

data = [1, 2, 5, 6, 11, 13, 15, 23, 35, 36, 38, 41, 46]

解决方案:

organised_data = [ [1,2,5], [6,11,13], [15,23], [35,36,38,41], [46] ]

我已经这么久了。

2 个答案:

答案 0 :(得分:5)

您可以在列表推导中使用连续索引之间的切片

>>> [data[indexes[i]:indexes[i+1]] for i in range(len(indexes)-1)]
[[1, 2, 5], [6, 11, 13], [15, 23], [35, 36, 38, 41], [46]]

答案 1 :(得分:2)

使用zip

>>> [data[i:j] for i, j in zip(indexes, indexes[1:])]
[[1, 2, 5], [6, 11, 13], [15, 23], [35, 36, 38, 41], [46]]