用偏移量对数组进行分区

时间:2016-09-14 14:57:46

标签: scala clojure

在Clojure中我可以使用偏移步骤(

)对矢量进行分区
(partition 2 1 [1 2 3 4])

这将返回一系列n个项目的列表,每个项目的偏移量相隔一步。 例如,前一个方法返回

((1 2) (2 3) (3 4))

我只是想知道如何在Scala中实现相同的目标

4 个答案:

答案 0 :(得分:2)

使用sliding - Array(1, 2, 3, 4).sliding(2)。这样会为您提供Iterator,您可以拨打电话,例如toArray并获取内部所需的Array[Array[Int]]

答案 1 :(得分:2)

为此目的,标准库sliding中有函数

scala> val x = Array(1, 2, 3).sliding(2, 1)
x: Iterator[Array[Int]] = non-empty iterator

scala> x.next
res8: Array[Int] = Array(1, 2)

scala> x.next
res9: Array[Int] = Array(2, 3)

答案 2 :(得分:2)

scala> val l = List(1, 2, 3, 4, 5)
l: List[Int] = List(1, 2, 3, 4, 5)

scala> l.sliding(2).toList
res0: List[List[Int]] = List(List(1, 2), List(2, 3), List(3, 4), List(4, 5))

答案 3 :(得分:0)

我认为这可以满足您的需求:

List(1,2,3,4).sliding(2,1).toList