如何删除收藏夹中的第n个物品?我想做这样的事情:

(def coll [:apple :banana :orange])

(drop-nth 0 coll)  ;=> [:banana :orange]
(drop-nth 1 coll)  ;=> [:apple :orange]
(drop-nth 2 coll)  ;=> [:apple :banana]

是否有比我到目前为止提出的更好的方法?
(defn drop-nth [n coll]
  (concat (take n coll) (nthrest coll (inc n))))

最佳答案

如何使用 keep-indexed 呢?

(defn drop-nth [n coll]
   (keep-indexed #(if (not= %1 n) %2) coll))

这是适用于每个序列的通用解决方案。如果要坚持使用向量,可以按照here所述使用subvec

关于clojure - 如何在Clojure中删除集合中的第n个项目?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24553524/

10-11 03:56