Clojure 将此列表转换为集合向量

Clojure 将此列表转换为集合向量,clojure,Clojure,有人知道如何将这个向量列表转换成集合向量吗 ([#{2}] [#{1 2 3 4}] [#{5}] [#{3}]) 结果应该是 [#{2} #{1 2 3 4} #{5} #{3}] 请注意,集合只是向量的元素 因此,一种方法是在向量列表上迭代(映射),并选择每个向量(即集合)的第一个元素。这将生成这些集合的列表,然后可以将其转换为向量: user=> (vec (map first '([#{2}] [#{1 4 3 2}] [#{5}] [#{3}]))) [#{2} #{1 4

有人知道如何将这个向量列表转换成集合向量吗

([#{2}] [#{1 2 3 4}] [#{5}] [#{3}])
结果应该是

[#{2} #{1 2 3 4} #{5} #{3}]

请注意,集合只是向量的元素

因此,一种方法是在向量列表上迭代(
映射
),并选择每个向量(即集合)的
第一个
元素。这将生成这些集合的列表,然后可以将其转换为向量:

user=> (vec (map first '([#{2}] [#{1 4 3 2}] [#{5}] [#{3}])))
[#{2} #{1 4 3 2} #{5} #{3}]

实现这一点的多种方法。这取决于您的需要以及您使用的方法:

(def data '([#{2}] [#{1 2 3 4}] [#{5}] [#{3}]))

;; If you have a list of single element lists:
(mapv first data) ;; => [#{2} #{1 2 3 4} #{5} #{3}]

;; If you have a list of multiple element lists:
(vec (apply concat data)) ;; => [#{2} #{1 2 3 4} #{5} #{3}]

;; If you also want to handle multiple levels of nesting:
(vec (flatten data)) ;; => [#{2} #{1 2 3 4} #{5} #{3}]

;; If you ..;
(transduce (map first) conj data) ;; => [#{2} #{1 2 3 4} #{5} #{3}]

我还没有看到有人建议将
用于
cat

(def data '([#{2}] [#{1 2 3 4}] [#{5}] [#{3}]))
(into [] cat data) => [#{2} #{1 4 3 2} #{5} #{3}]

欢迎来到SO。如果你能描述一下到目前为止你所做的尝试以及你所得到的结果,那会很有帮助。提示:答案将涉及到
vec
。我已经尝试了
flatten
,虽然这不会有多大作用,但会将向量转换为列表