scala - 比较两个列表中的项目

标签 scala

我有两个列表:List(1,1,1) , List(1,0,1)
我想得到以下内容:

  • 每个元素的计数,该元素在相同位置的第一个列表中包含1,而在相应列表中包含0,反之亦然。
    在上面的示例中,这将是1,0,因为第一个列表在中间位置包含1,第二个列表在相同位置(中间)包含0。
  • 每个元素的计数,其中1在第一个列表中,而1在第二个列表中。
    在上面的示例中,这是两个,因为每个对应的列表中都有两个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/

    相关文章:

    scala - 在 Scala 中将当前类作为参数传递

    scala - 作为另一个导入包

    java - 在Scala中使用正则表达式(字符串+数字)

    javascript - Scala Play - 如何将 Scala 字符串列表转换为 javascript 字符串数组(避免 "问题)?

    scala - Spark : NullPointerException when RDD isn't collected before map

    scala - Scala 中的结构共享列表

    scala - 在 Scala 中运行时获取泛型参数的显式类型

    scala - SBT:如何访问环境变量或配置?

    scala - 如何将 npm/gulp/bower 构建过程集成到 sbt 中?

    java - Scala类继承和方法参数