繁体   English   中英

在Clojure中等效于C ++的stable_partition吗?

[英]Equivalent of C++'s stable_partition in clojure?

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

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

它可能看起来像这样:

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

我认为最简单的版本是:

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

既然你说

“它对集合进行划分,并将那些谓词返回true的元素放在一个地方,并将那些谓词返回false的元素放在另一个地方”

也许按group-by本身就是答案(因为散列图中键下的向量毕竟是地方)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM