我有一个不寻常的列表排序问题,我正在努力寻找一种简洁有效的解决方法。问题如下:我有一个名为索引的列表,该列表中的每个项目对应于第二个列表数据的索引。因此,例如索引中的第一个数字是零,它对应于列表数据中的第一个项目,即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] ]
我已经这么久了。
答案 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]]