gpt4 book ai didi

matrix - Kotlin:对矩阵中各行元素求和的优雅方法?

转载 作者:行者123 更新时间:2023-12-03 05:45:08 24 4
gpt4 key购买 nike

给定 ArrayList (行)ArrayList (一行中的元素),是否有更好的方法来获取总和列表,例如 (row[0][0] + row[1][0] + .... row[n][0] )除了编写“for”循环?

最佳答案

您可以使用sumsumBy来实现这一目标。

以下是 3 种方法:(1) 计算总体矩阵总和,(2) 计算给定行的总和,以及 (3) 计算给定列的总和:

val arr = arrayListOf(
arrayListOf(1, 2, 3),
arrayListOf(4, 5, 6),
arrayListOf(7, 8, 9)
)

fun matrixSum() = arr.sumBy { it.sum() }
fun rowSum(row: Int) = arr[row].sum()
fun colSum(col: Int) = arr.sumBy {row -> row[col] }
// shorter alternative: fun colSum(col: Int) = arr.sumBy { it[col] }

根据您的问题,您想调用colSum(0)。这将提取 row[0](索引 0 的每行值)并对这些值求和。

编辑:

针对评论区的问题,有以下两种方法:(1)计算所有行的总和,以列表形式返回; (2) 计算所有列总和,以列表形式返回。

fun rowSums() = arr.map { it.sum() }
fun colSums() = arr[0].indices.map { col -> colSum(col) }
// shorter alternative:
// fun colSums() = arr[0].indices.map(::colSum)
// another version that does not call colSum:
// fun colSums() = arr[0].indices.map { col -> arr.sumBy { row -> row[col] } }

解释 colSums (假设所有行具有相同的列数):首先,您获取第一行 (arr[0]),然后您获取其 indices (即,其列号 01,...,直到 nCols),然后您 map这些索引到其各自的 colSum() 结果。这可能不是最高效的方式,但它非常具有可读性。

关于matrix - Kotlin:对矩阵中各行元素求和的优雅方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54531767/

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