gpt4 book ai didi

java - 如何从集合中返回多个元素?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:37:42 26 4
gpt4 key购买 nike

在列表中,我需要用这个元素和之前所有元素的总和来替换每个元素。第一个元素不需要改变。示例:列表 (1.0, 2.0, 3.0, 4.0) 必须转换为 (1.0, 3.0, 6.0, 10.0)。我正在寻找最简洁和正确的方法。

我在谷歌上搜索了很长时间,但找不到任何关于通过元素之前的总和来转换元素的有用信息。另外,我在 Kotlinlang.org 的标准库中找不到所需的函数。请帮忙解决这个问题。

fun accumulate(list: MutableList<Double>): MutableList<Double> {
if (list.isEmpty()) return list
else for (i in 0 until list.size) {
if (i == list.indexOf(list.first())) list[i] = list.first()
else list[i] = list.sumByDouble { it } // here's my problem
}
return list
}

最佳答案

您必须使用存储运行总和的变量。

fun accumulate(list: MutableList<Double>): MutableList<Double> {
var runningSum = 0.0
list.indices.forEach { i ->
runningSum += list[i]
list[i] = runningSum
}
return list
}

请注意,空列表不是此代码的特例。

如果您更喜欢以 FP 方式进行操作并且非破坏性地转换列表,您可以这样写:

fun accumulate(list: List<Double>): List<Double> {
var runningSum = 0.0
return list.map {
runningSum += it
runningSum
}
}

关于java - 如何从集合中返回多个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54167682/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com