스칼라에서 zip과 unzip을 사용해서 얻을 수 있는 특별한 이득이 있을만한 예시를 소개한다.
보통 zip과 unzip은 붙였다가 떼였다가 할 때 사용할 수 있다.
val b = (List(1, 2, 3) zip List(List(0.0), List(0.2), List(0.3))).unzip
println(b)
다음은 결과이다.
(List(1, 2, 3),List(List(0.0), List(0.2), List(0.3)))
리스트를 붙여서 특정 정보가 있을 때는 보여주지 않으려 할 때,
즉, 다음 예시에서 List(0.0)이 존재하면 아예 그 값은 따로 저장하고 싶지 않을 때 사용할 수 있다.
val a = (List(1, 2, 3) zip List(List(0.0), List(0.2), List(0.3))) .filter(!_._2.forall(_ == 0.0)).unzip
println(a)
이전 예시를 실행하면, 첫번째 값이 List(0.0)이라 filter에서 걸렸기 때문에 1 키는 저장하지 않았다.
(List(2, 3),List(List(0.2), List(0.3)))
'scala' 카테고리의 다른 글
[scala] spark에서 partition 줄이기 - repartition, coalesce (0) | 2017.02.08 |
---|---|
[scala] List concatenation 리스트 결합 예시 (0) | 2017.01.11 |
[scala] () => A라는 형식의 Thunk 예시 (0) | 2017.01.04 |
[scala] 이항 함수를 사용하는 함수와 for 내장 함수 비교 (0) | 2017.01.04 |
[scala] reflection api 예시 (0) | 2016.12.21 |