Scala列表与索引信息的差异

时间:2015-08-28 12:40:38

标签: scala scala-collections

我有两个列表

  

val l1 = List(1,2,3)

     

val l2 = List(1,3,3)

  

l1.diff(L2)

我可以在列表中找到差异;同时我对索引感兴趣也发现差异;我能知道scala中的解决方案是什么吗?

注意:列表大小始终相同。

3 个答案:

答案 0 :(得分:7)

您可以只将索引添加到两个列表和差异:

val diff = l1.zipWithIndex.diff(l2.zipWithIndex)
-> List((2,1)) // different value is 2 and index is 1

答案 1 :(得分:2)

val indexes = (l1 zip l2 zipWithIndex).filter(x => x._1._1 != x._1._2).map(_._2)

val indexesWithDiffValues = (l1 zip l2 zipWithIndex).filter(x => x._1._1 != x._1._2)

此代码将为您提供所需的索引列表。

答案 2 :(得分:-1)

另一种向您展示哪个列表以及您可以在哪里找到值的方式:

l1.diff(l2).map(v => (v, l1.indexOf(v), l2.indexOf(v)))
// res6: List[(Int, Int, Int)] = List((2,1,-1))