在Kotlin中对Doubles的数组/列表进行元素运算的最佳方法是什么? 我想达到
的目的zip(vec1, weights1).map(*) + zip(vec2, weights2).map(*)
加号操作应将结果乘积逐元素相加(+是算术加法,而不是列表的串联)
答案 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 }