如何按特殊项目拆分列表?
How to split a list by a special item?
假设我有一个整数列表:
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))
是否有任何内置或巧妙的方法来做到这一点?
这有点粗糙,但像这样的东西可以工作:
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
}
假设我有一个整数列表:
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))
是否有任何内置或巧妙的方法来做到这一点?
这有点粗糙,但像这样的东西可以工作:
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
}