clojure:如何通过索引从向量中获取多个项目

时间:2015-01-04 12:18:21

标签: clojure

我使用以下代码按索引[1 2]提取数据,有没有更短的解决方案?

(vec (map #(nth ["a" "b" "c"] % ) [1 2]))

2 个答案:

答案 0 :(得分:7)

mapv映射到一个向量,当作为函数应用时,向量执行索引查找

(mapv ["a" "b" "c"] [1 2])

答案 1 :(得分:5)

如果你想 ONLY 一个向量的第一个和第二个索引,有很多方法...

可以使用简单的sub vector将第一个索引保留到第三个索引。

(subvec ["a" "b" "c"] 1 3)

你可以map the vector并将你的向量应用于第一个和第二个索引,将最后两个索引作为向量返回。

(mapv ["a" "b" "c"] [1 2])

使用thread-last宏,您可以获取3个索引并删除第一个。

(->> ["a" "b" "c"] (take 3) (drop 1))

如果您有一个用n个索引定义的向量,并且您需要的是最后n个索引,则删除基数0以返回最后一个n。

(drop 1 ["a" "b" "c"])