如何按特殊项目拆分列表?

时间:2015-04-04 13:00:47

标签: list scala split

说我有一个整数列表:

val list = List(1,2,3,4,5,3,6,7)

我想用整数3拆分列表,所以我可以得到一个列表列表:

list.splitBy(3)
// returns List(List(1,2), List(4,5), List(6,7))

有没有内置或整洁的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

这有点粗糙,但这样的事情可行:

val list = List(1,2,3,4,5,3,6,7)

println(splitListAt(list, 3))

def splitListAt(list:List[Int], toSplit:Int) = {
  val (master, lastSub) = list.foldLeft((List.empty[List[Int]], List.empty[Int])){
    case ((master, sub), i) if i == toSplit => (master :+ sub, List.empty[Int])
    case ((master, sub), i) => (master, sub :+ i)
  }
  master :+ lastSub
}