[英]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.