Scala 遍历列表的两个连续元素

Scala iterate over two consecutive elements of a list

我们如何遍历列表的两个连续元素并应用差异函数 例如我有这个:

val list = List(List("Eat", "Drink", "Sleep", "work"), List("Eat", "Sleep", "Dance"))

我想遍历这两个连续的元素并计算差值

我已经试过了,但我不知道如何遍历每两个连续的元素

list.map((a,b) => a.diff(b))

输出应该是List("Drink", "work")

def main(args: Array[String]): Unit = {
    val list = List(List("Eat", "Drink", "Sleep", "work"), List("Eat", "Sleep", "Dance"));
    val diff = list.head.diff(list(1))
    println(diff)
  }

如果我理解正确的话,您可能想要遍历滑动 window。

list.sliding(2).map{
  case List(a, b) => a.diff(b)
  case List(a) => a
}.toList

或者您可能还希望 grouped(2) 将列表分成组。

在您的情况下,匹配可以很好地工作:

val list = List(List("Eat", "Drink", "Sleep", "work"), List("Eat", "Sleep", "Dance"))
list match { case a :: b :: Nil => a diff b}

如果列表并不总是有 2 个项目,您还应该在 match

中有一个 catch-all case