3
这里是代码我写的平均坐标内包含一个地图的价值观中值:取平均数值包含在地图
val averaged = Map((2,10) -> List((2.0,11.0), (5.0,8.0)))
//> averaged : scala.collection.immutable.Map[(Int, Int),List[(Double, Double)
//| ]] = Map((2,10) -> List((2.0,11.0), (5.0,8.0)))
averaged.mapValues(m => {
val s1 = m.map(m => m._1).sum
val s2 = m.map(m => m._2).sum
(s1/m.size , s2/m.size)
}) //> res0: scala.collection.immutable.Map[(Int, Int),(Double, Double)] = Map((2,
//| 10) -> (3.5,9.5))
此代码工作正常,但mapValues
功能需要传球次数等于长度的名单。使用Scala有没有更实用的方法来达到同样的效果?
适合我。我刚更新了完整的代码;也许你错过了一些东西。 – dhg 2015-03-02 22:05:49
将解压缩不会被多次调用,因为它包含在mapValues函数中,或者是因为(s1,s2)是解压缩的val会被调用一次? – 2015-03-02 22:07:43