0
說我有一個整數列表:如何按特殊項目分割列表?
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)
我想用整數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
}
我敢肯定,這是可以做到一個'有兩個蓄能器,一個用於列表清單(的結果fold'摺疊),一個用於子列表,它將被附加到直到遇到3,然後它將該子列表添加到列表清單並清除下一組數字的子列表。 – cmbaxter 2015-04-04 13:04:58