Kotlin 中是否有一种函数式方法可以将列表(N 个元素)映射到相邻元素(N - 1 个元素)之和的列表?

问题描述 投票:0回答:2

如果可以使用减少/折叠或其他功能方式,那么我不知道如何做到这一点。 我需要以某种方式转换一个列表:

1, 2, 5, 2
3 (1+2), 7 (2+5), 7 (5+2)

我知道问题是减少/折叠迭代相邻元素,但它只是与减少前一个元素的结果一起使用的元素之一。 如果有一种方法可以迭代重叠/相交对,那么它将满足我的需要。

kotlin functional-programming
2个回答
2
投票

您需要的是在迭代列表时两个元素的滑动窗口。你可以在 Kotlin 中这样做:

val result = listOf(1, 2, 5, 2)
    .windowed(2) {
        it.sum()
    }

结果现在包含列表

[3, 7, 7]


0
投票

Kotlin 提供了 zipWithNext 函数,它正是这样做的:

listOf(1, 2, 5, 2).zipWithNext(Int::plus)
© www.soinside.com 2019 - 2024. All rights reserved.