如果有可能使用reduce/fold或其他功能方式,那么我无法找到如何做到这一点.
我需要改变一个列表,比如说:
1, 2, 5, 2
到
3 (1+2), 7 (2+5), 7 (5+2)
我理解问题是减少/折叠相邻元素的重叠,但它只是其中一个元素,其结果是减少前一个元素. 如果有一种方法来覆盖重叠/交叉的对,那么它将允许我所需要的.
如果有可能使用reduce/fold或其他功能方式,那么我无法找到如何做到这一点.
我需要改变一个列表,比如说:
1, 2, 5, 2
到
3 (1+2), 7 (2+5), 7 (5+2)
我理解问题是减少/折叠相邻元素的重叠,但它只是其中一个元素,其结果是减少前一个元素. 如果有一种方法来覆盖重叠/交叉的对,那么它将允许我所需要的.
您需要的是一个包含两个元素的滑动窗口,同时迭代列表.你可以在Kotlin中这样做:
val result = listOf(1, 2, 5, 2)
.windowed(2) {
it.sum()
}
结果现在包含列表[3, 7, 7]
.