簡體   English   中英

Scala 迭代列表的兩個連續元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM