簡體   English   中英

遍歷列表並處理Scala中未找到的項目

[英]Iterate through list and handle not found items in Scala

我有兩個列表A和B。我想遍歷列表B並從A中查找匹配項。對於每個不匹配項,我想調用另一個函數來計算新值。

我嘗試了不同的方法來獲得想要的結果:

val a = List(1,2,3)
val b = List(1,2,4,5)
def compute(i:Int):Int = -1*i
// What I want: val r = List(1,2,-4,-5)
val r1 = b.foreach(bb => a.find(aa => aa==bb).getOrElse(compute(bb)))
val r2 = for {
 bb <- b
 r <- a.find(_ == bb).getOrElse(compute(bb))
} yield r

實際上,我的列表比較復雜,但是這個簡單的示例有效。

顯然我在這里丟失了一些東西,甚至可能以錯誤的方式對其進行了攻擊。 我希望有人能指出我正確的方向。 謝謝。

也許要先設定一個然后再映射。

val s = a.toSet
b.map{e => if (s.contains(e)) compute(e) else e}
val r = b map (elem => if (a contains elem) elem else compute(elem))

這個怎么樣?

b.map(i => {
  val matches = a.filter(x => x == i)
  if (matches.nonEmpty) matches.head
  else compute(i)
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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