【问题标题】:Equivalent of C++'s stable_partition in clojure?相当于clojure中C++的stable_partition?
【发布时间】:2016-02-07 02:07:51
【问题描述】:

在 C++ 中,标准库中有一个名为 stable_partition 的函数,它接受一个集合和一个谓词。它划分集合并将谓词返回 true 的元素放在一个位置,将谓词返回 false 的元素放在另一个位置,同时保留元素的相对顺序。

我只是想知道标准 clojure 库中是否有类似的东西。尽管我进行了搜索,但我找不到这样的功能。它可能会返回两个较小集合的惰性序列,其中一个集合包含谓词返回 true 的元素,另一个集合包含谓词返回 false 的元素。

它可能看起来像这样:

(stable-partition even? [1 2 3 4 5]) -> ([1 3 5] [2 4])

【问题讨论】:

    标签: c++ clojure


    【解决方案1】:

    我认为最简单的版本是:

    (defn stable-partition [p? coll]
      (map (group-by p? coll) [false true]))
    

    既然你说

    “它划分集合并将那些元素放在 谓词在一个地方返回 true 并且那些元素 谓词在其他地方返回 false"

    也许group-by 本身就是答案(因为哈希映射中键下的向量毕竟是位置)。

    【讨论】:

      猜你喜欢
      • 2011-04-18
      • 2020-04-15
      • 2019-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-18
      相关资源
      最近更新 更多