如何删除集合中的第n个项目?我想做这样的事情:
(def coll [:apple :banana :orange])
(drop-nth 0 coll) ;=> [:banana :orange]
(drop-nth 1 coll) ;=> [:apple :orange]
(drop-nth 2 coll) ;=> [:apple :banana]
Run Code Online (Sandbox Code Playgroud)
到目前为止,有没有比我想出的更好的方法呢?
(defn drop-nth [n coll]
(concat (take n coll) (nthrest coll (inc n))))
Run Code Online (Sandbox Code Playgroud)
slo*_*oth 15
怎么用keep-indexed?
(defn drop-nth [n coll]
(keep-indexed #(if (not= %1 n) %2) coll))
Run Code Online (Sandbox Code Playgroud)
这是一个适用于每个序列的通用解决方案.如果你想坚持使用矢量,你可以subvec按照这里的描述使用.