繁体   English   中英

Scala:在一个结构中合并两个数组

[英]Scala: merge two arrays in one single structure

我有两个数组:

val diceProbDist = new Array[Double](2 * DICE + 1)

val diceExpDist = new Array[Double](2 * DICE + 1)

我想合并一个单一的结构(某种元组,也许):

(0, 0.0, 0,0)(1, 0.0, 0.0)(2, 0.02778, 0.02878)...

其中第一个条目是数组索引,第二个条目是第一个数组值,第三个条目是第二个数组值。

是否有一些scala函数可以实现(使用地图或类似的拉链)?

谢谢,ML

val diceProbDist = Array(0.1, 0.2, 0.3)
val diceExpDist = Array(0.11, 0.22, 0.33)

diceProbDist
 .zip(diceExpDist)
 .zipWithIndex
 .map { case ((v1, v2), i) => (i, v1, v2) }

// result: Array((0,0.1,0.11), (1,0.2,0.22), (2,0.3,0.33))

如果你不介意的话,简单for理解也应该成功:

for {
  index <- 0 until math.min(diceExpDist.length, diceProbDist.length)
} yield (index, diceProbDist(index), diceExpDist(index))

另一个解决方案,类似于tkachuko的一个没有理解的

val diceProbDist = List(0.1, 0.2, 0.3)
val diceExpDist = List(0.11, 0.22, 0.33)

val range = 0 until math.min(diceExpDist.length, diceProbDist.length)
range.map { idx => (idx, c(idx), d(idx)) }

// result : res0: List[(Int, Int, Int)] = List((0,0,11), (1,1,12), (2,2,13), (3,3,14), (4,4,15), (5,5,16), (6,6,17), (7,7,18), (8,8,19), (9,9,20))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM