Scala에서 List에서 고유 한 항목을 찾는 방법
Scala에서 List에서 고유 한 항목을 찾는 방법은 무엇입니까?
이를 수행하는 가장 효율적인 순서 보존 방법은 Set
보조 데이터 구조로 를 사용하는 것입니다 .
def unique[A](ls: List[A]) = {
def loop(set: Set[A], ls: List[A]): List[A] = ls match {
case hd :: tail if set contains hd => loop(set, tail)
case hd :: tail => hd :: loop(set + hd, tail)
case Nil => Nil
}
loop(Set(), ls)
}
암시 적 변환을 사용하여 더 멋진 구문으로이를 래핑 할 수 있습니다.
implicit def listToSyntax[A](ls: List[A]) = new {
def unique = unique(ls)
}
List(1, 1, 2, 3, 4, 5, 4).unique // => List(1, 2, 3, 4, 5)
2.8에서는 다음과 같습니다.
List(1,2,3,2,1).distinct // => List(1, 2, 3)
주문 유지 기능으로 고유 한 고유 필터를 사용하세요.
scala> val l = List(1,2,3,3,4,6,5,6)
l: List[Int] = List(1, 2, 3, 3, 4, 6, 5, 6)
scala> l.foldLeft(Nil: List[Int]) {(acc, next) => if (acc contains next) acc else next :: acc }.reverse
res0: List[Int] = List(1, 2, 3, 4, 6, 5)
Rosetta 코드 : 고유 요소 시퀀스 생성 을 참조하는 경우
val list = List(1,2,3,4,2,3,4,99)
val l2 = list.removeDuplicates
// l2: scala.List[scala.Int] = List(1,2,3,4,99)
이후 List
불변, 당신은 초기 수정 실 거예요 List
호출하여removeDuplicates
경고 : 이 트윗 (!)에서 언급했듯이 이것은 순서를 유지하지 않습니다.
scala> val list = List(2,1,2,4,2,9,3)
list: List[Int] = List(2, 1, 2, 4, 2, 9, 3)
scala> val l2 = list.removeDuplicates
l2: List[Int] = List(1, 4, 2, 9, 3)
의 경우 티켓 929Seq
에 따라 Scala2.8에서 해당 메서드를 사용할 수 있어야합니다 . 그 동안 여기에 표시된 것과 같이 임시 정적 메서드를 정의해야합니다 .
Imho, 질문의 모든 해석은 거짓입니다.
Scala에서 List에서 고유 한 항목을 찾는 방법은 무엇입니까?
이 목록이 주어지면 :
val ili = List (1, 2, 3, 4, 4, 3, 1, 1, 4, 1)
목록에서 유일한 고유 항목은 2
입니다. 다른 항목은 고유하지 않습니다.
ili.toSet.filter (i => ili.indexOf (i) == ili.lastIndexOf (i))
찾을 것입니다.
list.filter { x => list.count(_ == x) == 1 }
간단한 임시 방법은 List를 Set에 추가하고 거기에서 사용하는 것입니다.
val l = List(1,2,3,3,3,4,5,5,6,7,8,8,8,9,9)
val s = Set() ++ x
println(s)
생성 :
> Set(5, 1, 6, 9, 2, 7, 3, 8, 4)
이것은 Seq (또는 모든 Iterable)에서 작동하지만 2.8에서는 필요하지 않습니다. 여기서 removeDuplicates 메소드가 더 읽기 쉽습니다. 또한 런타임 성능과보다 신중한 변환에 대해 확실하지 않습니다.
또한 분실 된 주문에 유의하십시오.
정의에 의해 설정에는 고유 한 요소 만 포함되어 있으므로 list.toSet이이를 수행합니다.
참고URL : https://stackoverflow.com/questions/1538598/how-in-scala-to-find-unique-items-in-list
'development' 카테고리의 다른 글
UILabel의 textColor 속성에 애니메이션을 적용하는 방법은 무엇입니까? (0) | 2020.10.15 |
---|---|
지연된 함수 호출 (0) | 2020.10.15 |
ImageButton의 표준 배경 이미지를 제거하는 방법은 무엇입니까? (0) | 2020.10.15 |
Python에서 스레딩 (0) | 2020.10.15 |
jQuery를 사용하여 요소의 상단에서 수직 거리를 픽셀 단위로 찾는 방법 (0) | 2020.10.15 |