다시 스칼라와 키/값 쌍 아이디어가 붙어 있습니다. 다시 한 번, Option을 어떤 식 으로든 사용하고 싶습니다. 이번에는 그 키를 기반으로 한 쌍을 제거하는 방법과 그 키의 첫 번째 인스턴스 만 제거하는 방법에 중점을두고 있습니다. 나는 filter
과 filterNot
을 사용하려고 시도했으나 동일한 쌍의 모든 키를 제거합니다. 또한 다시 구현하기 위해 List
을 반쯤 간단하게 유지하려고 시도합니다.스칼라 : 목록에서 키/값 쌍을 제거합니다.
0
A
답변
0
당신이 무엇을 요구하는지 말할 수 없습니다. 작성하려고하는 함수의 서명을 작성하면 도움이됩니다.
아마도 이와 같은 것일 수 있습니까? 당신이 요구하는지 정확히 수행
def remove[A, B](seq: Seq[(A, B)], key: A): Seq[(A, B)] =
seq.indexWhere(_._1 == key) match {
case -1 => seq
case n => seq.patch(n, Nil, 1)
}
remove(Seq((1,2), (2,3), (3,4), (2,5)), 2)
// List((1,2), (3,4), (2,5))
remove(Seq((1,2), (2,3), (3,4), (2,5)), 6)
// List((1,2), (2,3), (3,4), (2,5))
0
Seq has a method called find
:
def find(p: (A) ⇒ Boolean): Option[A] Finds the first element of the sequence satisfying a predicate, if any. Note: may not terminate for infinite-sized collections. p the predicate used to test elements. returns an option value containing the first element in the sequence that satisfies p, or None if none exists.
사용법 :
val list = List(("A",1),("B",2),("C",3))
def remove(key:String): Option[Int] = list.find(_._1 == key)
remove("B")
// Some((B,2))
remove("D")
// None
0
val list = List(1 -> 'a, 2 -> 'b, 2 -> 'c)
val removal = list find (_._1 == 2)
// Option[(Int, Symbol)] = Some((2,'b))
val newList = list diff removal.toList
// List[(Int, Symbol)] = List((1,'a), (2,'c))
diff
이 인수에있는 각 요소의 첫 번째 인스턴스를 제거합니다 목록이 아니며 모두가 filter
이됩니다.
관련 문제
- 1. Dictonary가 첫 번째 쌍을 제거합니다.
- 2. Python이 목록에서 항목을 제거합니다.
- 3. 스키마의 목록에서 요소를 제거합니다.
- 4. python의 목록에서 요소를 제거합니다.
- 5. Haskell - 목록에서 소수를 제거합니다.
- 6. 목록에서 중복 목록을 제거합니다.
- 7. weak_ptrs 목록에서 항목을 제거합니다.
- 8. Java - 목록에서 일치하는 쌍을 찾습니다.
- 9. perl 목록에서 순서가없는 쌍을 생성하십시오.
- 10. php querystring에서 하나의 변수 값 쌍을 제거합니다.
- 11. php; querystring에서 단일 변수 값 쌍을 제거합니다.
- 12. SVN이 위탁 목록에서 파일을 제거합니다.
- 13. bash는 목록에서 중복 문자열을 제거합니다.
- 14. Java가 연결된 목록에서 중복을 제거합니다.
- 15. python의 목록에서 문자를 제거합니다. \ pygame
- 16. Phpstorm이 폴더 목록에서 bg를 제거합니다
- 17. 목록에서 특정 문자열 값을 제거합니다.
- 18. Lisp의 목록에서 하위 목록을 제거합니다.
- 19. 스칼라 : foldl을 사용하여 목록에서지도에 쌍을 추가 하시겠습니까?
- 20. 목록에서 최대 일치 항목을 찾고 목록에서 쌍을 찾습니다.
- 21. 조건에 따라 목록에서 스칼라 추출물
- 22. 스칼라 그룹 목록에서 연속 요소
- 23. 목록에서 이미 역사적으로 존재하지 않는 쌍을 생성하십시오.
- 24. 항목 목록에서 쌍을 그룹화하는 Python 빠른 방법
- 25. 재귀 - 목록에서 가능한 모든 쌍을 얻습니다.
- 26. 동일한 목록에서 같은 순위의 쌍을 지우시겠습니까?
- 27. Redis Store 키값 쌍 (가변 값 포함)
- 28. 집합에 의존하지 않고 객체 목록에서 중복을 제거합니다.
- 29. JQuery Dialog가 이미지 목록에서 이미지를 제거합니다.
- 30. 목록에서 반복 된 하위 목록을 제거합니다.
"첫 번째"는 _functional_이 아닌 _procedural_로 실행 순서에 의존합니다. –
숙제와 같고'List'를 사용하면서 가능한 한 기능적 일 것을 목표로하기 때문에'List'의'span' 함수를 가르쳐 드리겠습니다. 반환하는 튜플을 (머리, 꼬리)로 분해 할 수있는 방법과이 튜토리얼로 수행 할 수있는 작업을 생각해보십시오. – yan
@ThomasW 전혀 없습니다. 'List'는 정렬 구조입니다. 그래서 "first"는 아이템이 추가/접근되는 실행 순서에 관계없이 그 구조의 측면에서 잘 정의되어 있습니다. –