如何删除收藏夹中的第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/