Kotlin中的元素式算术运算

时间:2018-06-21 09:44:29

标签: functional-programming kotlin

在Kotlin中对Doubles的数组/列表进行元素运算的最佳方法是什么? 我想达到

的目的
zip(vec1, weights1).map(*) + zip(vec2, weights2).map(*)

加号操作应将结果乘积逐元素相加(+是算术加法,而不是列表的串联)

1 个答案:

答案 0 :(得分:1)

Kotlin的方式将是使用大量的常规Collection / Sequence运算符。

在这种情况下,如果要对两个列表的每个对应的(索引方式)对元素进行操作,则需要使用zip运算符,该运算符将生成Pair s个列表。通过Kotlin销毁,您可以很容易地对货币对进行操作。

如果我理解要正确实现的目标,那么您的示例将表示为(我出于可读性考虑使用变量):

val result1 = vec1.zip(weights1) { a, b -> a * b }
val result2 = vec2.zip(weights2) { a, b -> a * b }
result1.zip(result2).map { (a, b) -> a + b }