2016-08-18 33 views
4

想我需要一個給定的名單分成3段像這樣:如何列出分成段

val l = (0 until 5).toList 
val segments = l.tails.map(_.take(3)).filter(_.size == 3).toList 
segments: List[List[Int]] = List(List(0, 1, 2), List(1, 2, 3), List(2, 3, 4)) 

我得到了segments我的需要,但代碼顯然是醜陋的。你會如何改寫它?

回答

6

使用sliding

val segments: Iterator[List[Int]] = l.sliding(3) 

segments.toList 
> List[List[Int]] = List(List(0, 1, 2), List(1, 2, 3), List(2, 3, 4)) 
+0

哦,謝謝!忘了這個。 – Michael