Scala:如何根据列表中相邻元素的操作创建新列表

时间:2014-11-02 16:11:24

标签: scala

如果我有一个像List(1,2,3,4)这样的列表,我想创建一个相当于的新列表,

列表(1 + 2,3 + 4)=列表(3,7)

我需要一些操作来在列表中添加相邻的数字并从中创建新的列表。我查看了map,reduceLeft,foldLeft操作,但找不到可以实现此目的的东西。

1 个答案:

答案 0 :(得分:6)

您正在寻找的方法是grouped,它将列表划分为给定大小的子列表。例如:

scala> List(1, 2, 3, 4).grouped(2).map(_.sum).toList
res0: List[Int] = List(3, 7)

请注意grouped返回一个迭代器,因此如果需要集合,则需要调用toList之类的东西。另请注意,如果您的列表没有偶数个元素(或者更多通常不能被grouped的参数整除),则迭代器返回的最终列表可能包含更少的元素比其他人。