我正在尝试对可能包含缺失值的列表进行一些算术运算。
到目前为止,我用 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 表达式...
所以,我想知道:
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/