我有2种类型的列表
List[Int, Int]
它们分别包含(12, 45)
和(65, 78)
。
如何将这些列表合并为一个,同时合并它们的值,如:
(72, 123)
答案 0 :(得分:2)
val ls = List(List(12,45),List(65,78))
ls(0).zip(ls(1)).map{case (a,b)=>a+b}
答案 1 :(得分:1)
您可以压缩这两个列表,然后映射它们,并添加元组的每个元素
l1.zip(l2)
.map{case (a, b) => (a._1 + b._1, a._2 + b._2) }
如果两个列表的长度不同,您可以使用zipAll
发送两个额外的参数,以防第一个或第二个列表较短
l1.zipAll(l2, (0,0), (0,0))
.map{case (a, b) => (a._1 + b._1, a._2 + b._2)
答案 2 :(得分:0)
您是说对它们求和?可以做到:
val result = list1.indices.map(i => list1(i) + list2(i))
如果您希望获得列表,请点击result.toList
。
答案 3 :(得分:0)
假设这是针对给定的一组水平方向排列的一维数组,这将起作用;
var a = [12, 45];
var b = [65, 78];
var reduceMultiArray = (arr1, arr2, columnNum) => {
let combine = arr1.concat(arr2);
for (i = 0; i < columnNum; i++) {
console.log(combine[i] + combine[i + columnNum]);
}
};
reduceMultiArray(a, b, 2); // Count of one of the arrays for the 3 param
答案 4 :(得分:0)
在此示例中,您可以对n(Int,Int)的列表求和:
val yourList : List[(Int,Int)] = List((12, 45),(65, 78))
val result : (Int,Int) = (yourList.map(_._1).sum,yourList.map(_._2).sum)