从Clojure中的向量中删除特定类型的元素

时间:2016-02-15 04:47:02

标签: clojure

我试图找出如何从特定类型的clojure中的向量或列表中删除元素。说,我有一个包含字符串和整数的列表。我想创建一个只包含字符串的列表和另一个包含数字的列表。

我该怎么做?

E.G。 [1 2 "Hello" 3 4 "Bye"]将成为[1 2 3 4]["Hello" "Bye"]

如果我在列表中列出列表或者甚至更深入一步,我也会如何做同样的事情。

2 个答案:

答案 0 :(得分:6)

一种可能的方式:

((juxt filter remove) string? [1 2 "Hello" 3 4 "Bye"])
;; [("Hello" "Bye") (1 2 3 4)]

答案 1 :(得分:2)

您可以使用group-by

(group-by type [1 2 "hello" 3 4 "Bye"]) 
;; returns {java.lang.Long [1 2 3 4], java.lang.String ["hello" "Bye"]}