Scala List 与索引信息的区别

Scala List difference with index information

我有两个列表

val l1 = List(1,2,3)

val l2 = List(1,3,3)

l1.diff(l2)

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

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

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)

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

您可以只向两个列表添加索引,然后比较:

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

另一种方式可以很容易地向您显示哪个列表以及您可以在何处找到值:

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