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

标签 clojure

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

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

最佳答案

如果只需要向量的第一个索引和第二个索引,则有很多方法...

一个简单的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个索引,则将base 0删除以返回最后n个。
(drop 1 ["a" "b" "c"])

关于clojure:如何从向量中通过索引获取多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27765410/

相关文章:

clojure - *allow-unresolved-vars* 在 Clojure 中做什么?

sqlite - 当我在 korma 中调用插入多行时,出现异常

clojure - Clojure 中的 macroexpand 和 macroexpand-1 有什么区别

unit-testing - 如何从 `lein test` 输出成功的测试?

database - 从 postgres 迁移到 datomic

java - Processing(二维图形)是否适合大型项目?

java - 在 Clojure 中使用 JSoup 解析字符串

ruby - clojure 中的屏幕抓取

clojure - 使用不同中间件的 Compojure 路由

clojure - core.logic lvars 上的算术和 clojure 函数