如果有可能使用reduce/fold或其他功能方式,那么我无法找到如何做到这一点. 我需要改变一个列表,比如说: 1, 2, 5, 23 (1+2), 7 (2+5), 7 (5+2)

我理解问题是减少/折叠相邻元素的重叠,但它只是其中一个元素,其结果是减少前一个元素. 如果有一种方法来覆盖重叠/交叉的对,那么它将允许我所需要的.

推荐答案

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

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

结果现在包含列表[3, 7, 7].

Kotlin相关问答推荐

如何在Kotlin中为两个数据类创建可重用的方法?

如何在Kotlin中模拟www.example.com()?

带有Spring Boot和Kotline的可嵌入实体

Kotlin - 什么时候和什么时候不喜欢内联函数,为什么?

为什么在 Kotlin 中调用私有构造函数会导致错误为无法访问 是什么?

为什么 KFunction2 在 Kotlin 中不是可表示类型?

Kotlin 中二叉树的深度

Kotlin 从其他类调用成员扩展函数

使用纯 Kotlin 函数作为 Junit5 方法源

Kotlin 中 lambda 表达式中的默认参数

Foo::class.java 和 Foo::javaClass 有什么区别?

如何使用 Kotlin Coroutines 使 setOnClickListener debounce 1 秒?

Kotlin-通过与属性列表进行比较来筛选对象列表

无法解决:androidx.lifecycle:lifecycle-extensions-ktx:2.0.0-alpha1

IllegalStateException:function = , count = 3, index = 3

安装 Kotlin-Jupyter:e: java.lang.NoClassDefFoundError: 无法初始化类 org.jetbrains.kotlin.com.intellij.pom.java.LanguageLevel

Kotlin Flow 收集后无法执行代码

如何在kotlin用mockito模仿lambda

Android Jetpack Compose 中的文本渐变

比较Kotlin的NaN