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

use*_*449 3 scala

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

清单(1 + 2,3 + 4)=清单(3,7)

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

Tra*_*own 6

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

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

注意,grouped返回一个迭代器,所以你需要调用类似于toList你想要一个集合的东西.另请注意,如果列表中没有偶数个元素(或者通常不能被参数整除grouped),则迭代器返回的最终列表可能包含的元素少于其余元素.