我有两个列表
val l1 = List(1,2,3)
val l2 = List(1,3,3)
带
l1.diff(L2)
我可以在列表中找到差异;同时我对索引感兴趣也发现差异;我能知道scala中的解决方案是什么吗?
注意:列表大小始终相同。
答案 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))