2016-09-02 3 views
2

내가 원하는 목록을 그룹화 : 변환에같은 목록의 그룹 요소

val lst = List(1,2,3,4,5) 

그것으로 새로운 목록을 반환해야합니다

val newlst = List(List(1), List(1,2), List(1,2,3), List(1,2,3,4), Lis(1,2,3,4,5)) 
+2

어쨌든 먼저 시도해 봤으면 좋겠습니다. (1 to lst.length) .map (i => lst.take (i)). toList'. –

답변

3

(1 to lst.size map lst.take).toList 그것을해야합니다.

4

귀하는이 방법으로 수행 할 수 있습니다 이렇게

lst.inits.toList.reverse.tail 
+0

와우! 긴 라이브 스칼라 컬렉션! – Samar

+0

이것은 내 답변보다 더 관용적입니다 :) 나는 완전히 뭔가를 발견했습니다, 감사합니다 Logged – C4stor

0

foldLeft보다 효율적으로 될 것으로 보인다 못생긴 비록 : 꼭 일부 꼬리를 가지고

(lst.foldLeft((List[List[Int]](), List[Int]()))((x,y) => { 
    val z = x._2 :+ y; 
    (x._1 :+ z, z) 
}))._1 
0

로 꽤 또는 다른 사람과 같은 짧은 아니하지만, 영혼을위한 재귀 :

scala> createFromElements(List(1,2,3,4,5)) 
res10: List[List[Int]] = List(List(1), List(1, 2), List(1, 2, 3), List(1, 2, 3, 4), List(1, 2, 3, 4, 5))