list - 缺失值列表的算术运算

标签 list scala math missing-data

我正在尝试对可能包含缺失值的列表进行一些算术运算。
到目前为止,我用 Option[Int] 表示我的列表:

val mylist=List( Option(4), Option(8), None )

通过这种表示,我可以轻松地在列表上应用一个函数(例如,乘以 2):
scala> mylist.map(_.map(_*2))
res2: List[Option[Int]] = List(Some(8), Some(16), None)

然而,这看起来比它需要的更复杂,所以我想知道我是否遗漏了什么。

另外,我不知道如何写像总和这样的东西。我想应该可以使用(大)reduce 表达式...

所以,我想知道:
  • List[Option[Int]] 很好地代表了这个用例
  • mylist.map(_.map(_*2))是最好的映射方式
  • 有没有简单的求和方法?
  • 最佳答案

    嗯,这不是我自己使用的模式,但如果值可能“缺失”,那么 Option是合适的。但是一个List可能不是。在 List该位置通常不是您应该依赖的东西,因为它不是随机访问。也许是 Vector会更好,或者您需要想出一种更好的方法来对您的问题进行建模,即不要将其作为具有缺失值的列表。

    您可以处理Option很好地使用 for 表达式:

    for (o <- mylist; x <- o) yield x * 2
    

    或展平列表:
    mylist.flatten.map(_ * 2)
    

    总结一下:
    mylist.flatten.sum
    

    关于list - 缺失值列表的算术运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13547869/

    相关文章:

    python - 如何在Python中动态地将元组值保存到变量中?

    c# - 修改字符串列表以仅包含最大长度为 n 的字符串(使用 Linq)

    java - 无法对基本类型 double 调用 sqrt(double)

    math - 逆 FFT 的计算复杂度

    list - 使用 Haskell 中的函数将列表的列表与列表组合起来

    r - 将大列表转换为数据框的快速方法

    java - cuMemcpyDtoH 产生 CUDA_ERROR_INVALID_VALUE

    scala - 在 Scala 中的模式匹配中省略参数

    scala - Spark : Cannot add RDD elements into a mutable HashMap inside a closure

    java - 将对象旋转到面点