Mam dwóch list: List(1,1,1) , List(1,0,1)
Porównywanie przedmiotów w dwóch listach
Chcę uzyskać następujące:
badanie liczby każdego elementu, który zawiera 1 na pierwszej liście i 0 w analogicznym lista na tej samej pozycji i odwrotnie. W powyższym przykładzie będzie to 1, 0, ponieważ pierwsza lista zawiera 1 w środkowej pozycji, a druga lista zawiera 0 w tej samej pozycji (środkowej).
Liczba wszystkich elementów, gdzie 1 znajduje się na pierwszej liście, a 1 na drugiej liście. W powyższym przykładzie jest to dwa, ponieważ na każdej z nich znajdują się dwie cyfry 1. Mogę to uzyskać za pomocą metody przecięcia listy klas.
Po prostu szukam odpowiedzi do punktu 1 powyżej. Mogę użyć iteracyjnego podejścia do liczenia przedmiotów, ale czy istnieje bardziej funkcjonalna metoda? Oto cały kod:
class Similarity {
def getSimilarity(number1: List[Int], number2: List[Int]) = {
val num: List[Int] = number1.intersect(number2)
println("P is " + num.length)
}
}
object HelloWorld {
def main(args: Array[String]) {
val s = new Similarity
s.getSimilarity(List(1, 1, 1), List(1, 0, 1))
}
}
Nie możesz po prostu powiedzieć "x => x._1 == 1 && x._2 == 0"? –
Właściwie możesz zastąpić 'filter (predicate) .size' za pomocą' count (predicate) ' –