[英]Scala iterate over two consecutive elements of a list
我們將如何迭代列表的兩個連續元素並應用差異 function 例如我有這個:
val list = List(List("Eat", "Drink", "Sleep", "work"), List("Eat", "Sleep", "Dance"))
我想遍歷這兩個連續的元素並計算差異
我已經嘗試過了,但我不知道如何迭代每兩個連續的元素
list.map((a,b) => a.diff(b))
output 應該是List("Drink", "work")
如果我理解正確,您可能想要迭代滑動 window。
list.sliding(2).map{
case List(a, b) => a.diff(b)
case List(a) => a
}.toList
或者,您可能還想要將列表划分為組的grouped(2)
。
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)
}
在您的情況下, match 可以正常工作:
val list = List(List("Eat", "Drink", "Sleep", "work"), List("Eat", "Sleep", "Dance"))
list match { case a :: b :: Nil => a diff b}
如果列表並不總是有 2 個項目,您還應該有一個匹配的包羅萬象的案例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.