将列表拆分为scala中给定条件值的几个列表

时间:2018-03-11 22:36:40

标签: scala list

给出一个列表,如

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但是我无法实现所述解决方案。任何帮助我都非常感激。

1 个答案:

答案 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是要拆分的列表