如何对scala中的相邻元素求和
发布时间:2020-12-16 18:45:57 所属栏目:安全 来源:网络整理
导读:我想在 scala中对相邻元素求和,我不知道如何处理最后一个元素. 所以我有一个清单: val x = List(1,2,3,4) 我想使用索引和映射来对相邻元素求和: val size = x.indices.sizeval y = x.indices.map(i = if (i size - 1) x(i) + x(i+1)) 问题是这种方法在最后
我想在
scala中对相邻元素求和,我不知道如何处理最后一个元素.
所以我有一个清单: val x = List(1,2,3,4) 我想使用索引和映射来对相邻元素求和: val size = x.indices.size val y = x.indices.map(i => if (i < size - 1) x(i) + x(i+1)) 问题是这种方法在最后创建了一个AnyVal元素: res1: scala.collection.immutable.IndexedSeq[AnyVal] = Vector(3,5,7,()) 如果我尝试对集合中的元素或其他数字方法求和,则它不起作用: error: could not find implicit value for parameter num: Numeric[AnyVal] 我尝试使用以下方法过滤掉元素: y diff List(Unit) or y diff List(AnyVal) 但它不起作用. 在scala中有没有更好的方法来做这种类型的相邻和而不使用foor循环? 解决方法
对于更实用的解决方案,您可以使用滑动将元素组合成两个(或任意数量),然后映射到它们的总和.
scala> List(1,4).sliding(2).map(_.sum).toList res80: List[Int] = List(3,7) slide(2)将做的是创建一个像这样的列表的中间迭代器: Iterator( List(1,2),List(2,3),List(3,4) ) 因此,当我们链接map(_.sum)时,我们将每个内部List映射到它自己的总和. toList会将Iterator转换回List. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |