如何获得Kotlin中两个列表中所有元素的总和?

在Kotlin我有两个列表:

val x: List = listOf(1,2,3,4,5,6) val y: List = listOf(2,3,4,5,6,7) 

如何得到:

 val z: List = 3,5,7,9,11,13 

不使用循环?

假设这两个列表具有相同的大小

  1. 使用zip

     val sum = x.zip(y) { xv, yv -> xv + yv } 
  2. 使用简单的mapmapIndexed

     val sum = (0 until x.size).map { x[it] + y[it] } // or val sum = x.mapIndexed { index, xv -> xv + y[index] } 

当大小可以不同 ,你会假设0超出范围条目:

  1. 使用array

     val sum = IntArray(maxOf(x.size, y.size)) { x.getOrElse(it, {0}) + y.getOrElse(it, {0}) }.toList() 
  2. 使用范围:

     val sum = (0 until maxOf(x.size, y.size)).map { x.getOrElse(it, {0}) + y.getOrElse(it, {0}) } 
  3. 将列表扩展为相同的大小

     val xExtended = x + Array(maxOf(0, y.size - x.size), { 0 }) val yExtended = y + Array(maxOf(0, x.size - y.size), { 0 }) val sum = xExtended.zip(yExtended) { xv, yv -> xv + yv } 

我会去一个范围和map

 val sums = (0 until x.size).map { x[it] + y[it] } 

这可能比zip更少。