给出一个列表,如
List(1,2,3,4,5,6,7,8,9,10,11)
还有一个包含
等值的附加列表List(3, 2, 6)
我如何获得这样的结果:
List(List(1,2,3), List(4,5), List(6,7,8,9,10,11))
第一个列表是值列表,第二个列表表示要作为结果获取的分区的大小。
我想到了一个递归函数,使用list.take()来获取我想要的元素,然后在下一次调用之前列出list.drop但是我无法实现所述解决方案。任何帮助我都非常感激。
答案 0 :(得分:2)
list2.scanLeft((List.empty[Int], list1)) {
case ((_, remaining), i) => remaining.splitAt(i)
}.unzip._1.tail
作者信用:How to split a list by another list in Scala
其中list2表示要拆分的索引列表,list1是要拆分的列表