如何将数字列表映射到Scala中的增量列表?

Mic*_*ael 8 scala list-comprehension

假设我有一个数字列表.如何将列表转换为其"增量"列表 - 后续数字的成对差异?

例如:鉴于List(5, 2, 1, 1)我想得到List(3, 1, 0)

Lui*_*hys 15

正确的答案是

(xs, xs drop 1).zipped.map(_-_)
Run Code Online (Sandbox Code Playgroud)

当你传递一个空的或一位数的列表时,它甚至不会爆炸.


Tom*_*icz 10

List(5,2,1,1).sliding(2).map(pair => pair(0) - pair(1))
Run Code Online (Sandbox Code Playgroud)

  • 请注意,当输入列表仅包含一个元素时,会爆炸. (3认同)

lee*_*777 5

另外两个可能的解决方

list.zip(list.drop(1)).map { case (x, y) => x - y }

// in case you don't like the extractor method of dealing with Tuples
list.zip(list.drop(1)).map(p => p._1 - p._2)
Run Code Online (Sandbox Code Playgroud)