[SCALA] 스칼라 - 하나의 목록으로 목록의 변환 목록 : 목록 [목록 [A] 목록 [A]에
SCALA스칼라 - 하나의 목록으로 목록의 변환 목록 : 목록 [목록 [A] 목록 [A]에
스칼라 (2.9)에서리스트의 목록을 변환하는 가장 좋은 방법은 무엇입니까?
나는 목록을 가지고 :
List[List[A]]
이는 내가로 변환 할
List[A]
어떻게 그 재귀 적으로 달성 할 수 있는가? 아니면 다른 더 좋은 방법은 무엇입니까?
해결법
-
==============================
1.목록은 패턴 화 된 방법이있다. 왜 그것을 사용?
목록은 패턴 화 된 방법이있다. 왜 그것을 사용?
List(List(1,2), List(3,4)).flatten > List(1,2,3,4)
-
==============================
2.위의 예를 감안할 때, 나는 당신이 재귀가 필요하지 않다. 외모는 대신 List.flatten을 원하는 좋아한다.
위의 예를 감안할 때, 나는 당신이 재귀가 필요하지 않다. 외모는 대신 List.flatten을 원하는 좋아한다.
EG
scala> List(1,2,3) res0: List[Int] = List(1, 2, 3) scala> List(4,5,6) res1: List[Int] = List(4, 5, 6) scala> List(res0,res1) res2: List[List[Int]] = List(List(1, 2, 3), List(4, 5, 6)) scala> res2.flatten res3: List[Int] = List(1, 2, 3, 4, 5, 6)
-
==============================
3..flatten 분명히 가장 쉬운 방법이지만, 완성도 또한 flatMap에 대해 알아야 할
.flatten 분명히 가장 쉬운 방법이지만, 완성도 또한 flatMap에 대해 알아야 할
val l = List(List(1, 2), List(3, 4)) println(l.flatMap(identity))
과에 대한-이해 동등한
println(for (list <- l; x <- list) yield x)
펼치기 분명히 훨씬 더 많은 작업을 수행 할 수 있습니다 flatMap의 특별한 경우이다.
-
==============================
4.당신의 구조가 더 중첩 될 수 있다면, 같은 :
당신의 구조가 더 중첩 될 수 있다면, 같은 :
List(List(1, 2, 3, 4, List(5, 6, List(7, 8))))
이 기능은 당신에게 욕망의 결과를 제공한다 :
def f[U](l: List[U]): List[U] = l match { case Nil => Nil case (x: List[U]) :: tail => f(x) ::: f(tail) case x :: tail => x :: f(tail) }
-
==============================
5.당신은 재귀가 필요하지 않습니다하지만 당신이 원하는 경우에 당신은 그것을 사용할 수 있습니다 :
당신은 재귀가 필요하지 않습니다하지만 당신이 원하는 경우에 당신은 그것을 사용할 수 있습니다 :
def flatten[A](list: List[List[A]]):List[A] = if (list.length==0) List[A]() else list.head ++ flatten(list.tail)
이 목록에 패턴 화 된 방법 빌드처럼 작동합니다. 예:
scala> flatten(List(List(1,2), List(3,4))) res0: List[Int] = List(1, 2, 3, 4)
-
==============================
6.당신이 flatmap를 사용하려면, 여기에 방법입니다
당신이 flatmap를 사용하려면, 여기에 방법입니다
, 목록에 평면을에 당신이 목록 [지능]라는 이름의 LL의 목록을 가지고 있고, 당신이 원하는 것을 가정 많은 사람들이 이미 쉬운 방법이 당신에게 같은 펼치기로 답변을 제공합니다. 난 당신이 flatmap 방법을 사용하여 요구한다고 가정합니다. 이 경우라면, 여기에 방법입니다
ll.flatMap(_.map(o=>o))
from https://stackoverflow.com/questions/12600863/scala-convert-list-of-lists-into-a-single-list-listlista-to-lista by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 어떻게 | 패턴 매칭 작품 (파이프)? (0) | 2019.11.22 |
---|---|
[SCALA] java.lang.NoSuchMethodError : scala.Predef $ .refArrayOps (0) | 2019.11.22 |
[SCALA] 어떻게 스칼라에서 테스트 리소스에 액세스하려면? (0) | 2019.11.22 |
[SCALA] 스파크 : DB 점화 RDD 파티션 당 연결 및 수행 mapPartition (0) | 2019.11.22 |
[SCALA] 스칼라에서 병렬 파일 처리 (0) | 2019.11.22 |