我有两个列表:List(1,1,1) , List(1,0,1)
我想得到以下内容:
在上面的示例中,这将是1,0,因为第一个列表在中间位置包含1,第二个列表在相同位置(中间)包含0。
在上面的示例中,这是两个,因为每个对应的列表中都有两个1。我可以使用类List的intersect方法获得它。
我只是在寻找以上第1点的答案。我可以使用迭代方法对项目进行计数,但是有没有更实用的方法?
这是完整的代码:
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))
}
}
最佳答案
对于第一个:
scala> val a = List(1,1,1)
a: List[Int] = List(1, 1, 1)
scala> val b = List(1,0,1)
b: List[Int] = List(1, 0, 1)
scala> a.zip(b).filter(x => x._1==1 && x._2==0).size
res7: Int = 1
对于第二个:
scala> a.zip(b).filter(x => x._1==1 && x._2==1).size
res7: Int = 2
关于scala - 比较两个列表中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17812486/