【问题标题】:partition an Array with offset用偏移量对数组进行分区
【发布时间】:2023-03-14 06:34:01
【问题描述】:

在 Clojure 中,我可以使用偏移步长对向量进行分区,例如

(partition 2 1 [1 2 3 4])

这会返回一个包含 n 个项目的列表序列,每个项目的偏移量相隔一步。 例如前面的方法返回

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

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

【问题讨论】:

    标签: scala clojure


    【解决方案1】:

    使用sliding - Array(1, 2, 3, 4).sliding(2)。这会给你一个Iterator,你可以打电话给例如toArray 并获得 Array[Array[Int]] 内部结构符合要求。

    【讨论】:

      【解决方案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)
      

      【讨论】:

        【解决方案3】:
        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))
        

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2018-10-10
            • 1970-01-01
            • 2018-08-20
            • 2013-09-29
            • 2019-11-25
            • 1970-01-01
            • 2013-08-24
            相关资源
            最近更新 更多