有人知道如何将向量列表转换为集合向量吗?
([#{2}] [#{1 2 3 4}] [#{5}] [#{3}])
结果应为
[#{2} #{1 2 3 4} #{5} #{3}]
答案 0 :(得分:4)
完成此操作的多种方法。这取决于您的需要使用哪种方法:
(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}]
答案 1 :(得分:4)
我没有看到建议的一种方式是使用into
和cat
。
(def data '([#{2}] [#{1 2 3 4}] [#{5}] [#{3}]))
(into [] cat data) => [#{2} #{1 4 3 2} #{5} #{3}]
答案 2 :(得分:1)
请注意,这些集合只是向量的元素。
所以,一种方法是在向量列表上进行迭代(map
),并选择每个向量(即集合)的first
元素。这将建立这些集合的列表,然后可以将它们转换为向量:
user=> (vec (map first '([#{2}] [#{1 4 3 2}] [#{5}] [#{3}])))
[#{2} #{1 4 3 2} #{5} #{3}]