【问题标题】:Scala List difference with index informationScala List 与索引信息的区别
【发布时间】:2015-08-28 12:40:37
【问题描述】:

我有两个列表

val l1 = 列表(1,2,3)

val l2 = List(1,3,3)

l1.diff(l2)

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

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

【问题讨论】:

  • 我提出了关闭请求,因为不清楚他想要达到什么目的。

标签: scala scala-collections


【解决方案1】:

您可以将索引添加到列表和差异然后:

val diff = l1.zipWithIndex.diff(l2.zipWithIndex)
-> List((2,1)) // different value is 2 and index is 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)
    

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 如果“不同”位置的值之一出现在列表的前面,则不起作用:val l1 = List(1,2,3,1);val l2 = List(1,3,3, 2);l1.diff(l2).map(v => (v, l1.indexOf(v), l2.indexOf(v))) 给出List((1,0,0))
      猜你喜欢
      • 2016-09-28
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      • 2013-06-15
      相关资源
      最近更新 更多