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
我们如何遍历列表的两个连续元素并应用差异函数 例如我有这个:
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