Kotlin中列表或数组的产品

时间:2017-08-25 19:37:34

标签: kotlin

我正试图找到一种方法来获取List或Array的产品而不使用“重复”或Kotlin上的任何循环,但经过一些研究我找不到类似的东西。

Python中的这类内容将是:

>>> reduce(lambda x, y: x*y, [1,2,3,4,5,6])
output: 720

4 个答案:

答案 0 :(得分:7)

您可以在Kotlin中使用reduce

来自doc:

  

从第一个元素开始累积值并应用   从左到右操作到当前累加器值和每个   元件。

val list = listOf<Int>(1, 2, 3, 4, 5, 6)

val array = intArrayOf(1, 2, 3, 4, 5, 6)

list.reduce { acc, i ->  acc * i }  // returns 720

array.reduce { acc, i -> acc * i }  // returns 720

答案 1 :(得分:3)

使用fold功能

val total = listOf(1, 2, 3, 4, 5).fold(1, { total, next -> total * next })

答案 2 :(得分:2)

希望这会有所帮助:

fun main(args: Array<String>){
   val array = intArrayOf(1, 2, 3, 4, 5, 6)
   val product = array.fold(1){acc, i -> acc * i}
   println("The result is: $product")
}

这将输出数组的乘积。

答案 3 :(得分:1)

更简单的解决方案可能是:(1..6).reduce(Int::times)