在Clojure中我可以使用偏移步骤(
)对矢量进行分区(partition 2 1 [1 2 3 4])
这将返回一系列n个项目的列表,每个项目的偏移量相隔一步。 例如,前一个方法返回
((1 2) (2 3) (3 4))
我只是想知道如何在Scala中实现相同的目标
答案 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