如何合并两个列表并添加它们的值?

时间:2019-04-09 12:38:49

标签: scala list collections

我有2种类型的列表

List[Int, Int]

它们分别包含(12, 45)(65, 78)
如何将这些列表合并为一个,同时合并它们的值,如:

(72, 123)

5 个答案:

答案 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)