我想用 Scala 中的数字减去列表中的两个连续元素。
例如:我有这个清单:
val sortedList = List(4,5,6)
我想要一个像这样的输出列表diffList =(1, 1)
where 5-4 = 1
and 6-5 = 1
.
我尝试了以下代码:
var sortedList = List[Int]()
var diffList = List[Int]()
for (i <- 0 to (sortedList.length - 1) ;j <- i + 1 to sortedList.length - 1)
{
val diff = (sortedList(j) - sortedList(i))
diffList = diffList :+ diff
}
我有以下结果diffList =(1, 2, 1)
但我想要diffList = (1,1)
.
这是因为 for 循环。它不会同时迭代两个变量(i 和 j)。
您不需要通过可变性或命令式编程来解决这个问题,函数式编程可以满足您的需求。
def consecutiveDifferences(data: List[Int]): List[Int] =
if (data.isEmpty) List.empty
else data.lazyZip(data.tail).map {
case (x, y) => y - x
}
正如我常说的,Scaladoc https://www.scala-lang.org/api/current/是你的朋友。
(另外,作为一个建议,学习函数式编程的最好方法是禁止自己的可变性)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)