Vector 基于索引集合获取数组值
我正在寻找Vector 基于索引集合获取数组值,vector,clojure,Vector,Clojure,我正在寻找nth函数的泛化。 Julia中有一个很好的函数,我很难在Clojure中找到一个等价的函数: getindex(A,inds…)返回inds指定的数组A的子集, 其中每个ind可以是Int、Range或Vector 这与这个问题有关: 这是否满足您的需要: (defn get-nths [xs ns] (for [n ns] (nth xs n))) ? 向量、范围和仅一个的示例: (defn x [] (vector (get-nths [:a :b :c
nth
函数的泛化。
Julia中有一个很好的函数,我很难在Clojure中找到一个等价的函数:
getindex(A,inds…)返回inds指定的数组A的子集,
其中每个ind可以是Int、Range或Vector
这与这个问题有关:
这是否满足您的需要:
(defn get-nths [xs ns]
(for [n ns]
(nth xs n)))
?
向量、范围和仅一个的示例:
(defn x []
(vector
(get-nths [:a :b :c :d :e] [2 4])
(get-nths [:a :b :c :d :e] (range 3))
(get-nths [:a :b :c :d :e] [0])))
(x)
;; => [(:c :e) (:a :b :c) (:a)]
对于向量,您还可以使用
选择键
。在某些情况下,它可能非常有用:
user> (select-keys [:a :b :c :d] [0 1])
{0 :a, 1 :b}
map
已经完成了您想要的操作<代码>(映射v索引)按预期工作,因为可以将向量视为其索引的函数。我理解这可能很有用。Clojure不像其他语言那样珍视类型稳定性,这让我感到惊讶。您对Julia
的getindex
的描述与此不符。@我从早期版本复制了它。这同样适用于地图——不仅仅是矢量。